php 网站使用微博第三方授权登录
1、到微博开放平台注册账号并实名认证,地址:https://open.weibo.com/
2、创建应用,网站授权登录需要创建的类型为:微连接 - 网页应用。
3、拿到应用的 App Key 和 App Secret
4、微博登录授权文档地址:https://open.weibo.com/wiki/Connect/login
5、可以现在微博官方提供的 sdk 包,也可以自己参考文档写
6、以下是我个人写的微博登录授权,仅供参考
<?php
/**
* 微博 Oauth2.0 授权登录处理
* date 2019-07-17
*/
namespace oauth;
class weibo
{
private $app_key = ''; // 微博应用的 App Key
private $app_secret = ''; // 微博应用的 App Secret
private $oauth2_url = 'https://api.weibo.com/oauth2'; // 微博OAuth2.0接口URL地址
private $api2_url = 'https://api.weibo.com/2';
/**
* 设置Key 和 Secret,如果为空,默认读取config/oauth.php文件里的 weibo_app_key和weibo_app_secret
*
* @param array $config 微博应用的Key和Secret值
*/
public function __construct($config = [])
{
$this->app_key = !empty($config['app_key']) ? $config['app_key'] : config('oauth.weibo_app_key');
$this->app_secret = !empty($config['app_secret']) ? $config['app_secret'] : config('oauth.weibo_app_secret');
}
/**
* 微博授权跳转URL
* @param string $redirect_uri 授权回调地址
* @param string $state 回调带回参数,防止CSRF攻击
* @return mixed
*/
public function authorize($redirect_uri = '', $state = '')
{
if (empty($redirect_uri)) return false;
$url = $this->oauth2_url . '/authorize?client_id=' . $this->app_key . '&redirect_uri=' . $redirect_uri;
$url = $url . '&response_type=code&state=' . $state;
header('location: ' . $url);
}
/**
* 获取微博access_token值
* @param string $redirect_uri 授权回调地址
* @param string $code 通过authorize获取的code值
* @return mixed
*/
public function getAccessToken($redirect_uri = '', $code = '')
{
if (empty($redirect_uri) || empty($code)) return false;
$params = [
'client_id' => $this->app_key,
'client_secret' => $this->app_secret,
'grant_type' => 'authorization_code',
'redirect_uri' => $redirect_uri,
'code' => $code,
];
$url = $this->oauth2_url . '/access_token';
$res = \util\Curl::curlPostRequest($url, $params);
// 整理返回数据
$res_data = [
'app_account' => ['app_key' => $this->app_key, 'app_secret' => $this->app_secret],
'res_json' => $res
];
return $res_data;
}
/**
* 根据access_token和用户id获取用户信息
* @param string $access_token token值
* @param integer $uid 微博用户id
* @return array|void
*/
public function getUserInfo($access_token = '', $uid = 0)
{
if (!$access_token || !$uid) return false;
$url = $this->api2_url . '/users/show.json?access_token=' . $access_token . '&uid=' . $uid;
$res = \util\Curl::curlGetRequest($url);
return $res;
}
}
里面使用到 curl,大家可按照自己的习惯使用
本文为原创文章,转载无需和我联系,但请注明来自:http://www.baiyongj.com/news/507.html
收藏文章
-
最新评论
热评话题
- json_encode() 转换空数组为对象输出_小白的日常记录,小白博客,php博客,个人博客,技术博客,个人随笔记录,【小白】随笔记录
- editor.md 本地图片上传配置 和 自定义上传文件_小白的日常记录,小白博客,php博客,个人博客,技术博客,个人随笔记录,【小白】随笔记录
- Linux下使用vim编辑文件时,按了Ctrl+C的解决办法_小白的日常记录,小白博客,php博客,个人博客,技术博客,个人随笔记录,【小白】随笔记录
- Linux 安装 RabbitMQ - Centos7_小白的日常记录,小白博客,php博客,个人博客,技术博客,个人随笔记录,【小白】随笔记录
- linux 清空文件内容的三种方法_小白的日常记录,小白博客,php博客,个人博客,技术博客,个人随笔记录,【小白】随笔记录
- lnmp 一键安装包环境部署 thinkphp5 项目出现500错误 或 空白_小白的日常记录,小白博客,php博客,个人博客,技术博客,个人随笔记录,【小白】随笔记录
- php 网站使用 QQ 第三方授权登录_小白的日常记录,小白博客,php博客,个人博客,技术博客,个人随笔记录,【小白】随笔记录