最近使用Think PHP5框架开发一个应用,需要使用第三方登陆,因此用了这篇经验文章
- 下载第三方登陆的SDK文件,下载地址:http://dwz.cn/6Xy4PB
- 将下载下来的文件解压,在文件加里面有三个文件加,extend是tp5类库文件夹,extra是SDK配置文件,event是请求第三方接口获取授权信息
- 将得到的三个文件夹分别放到如图中所示的路径
4.新建一个Controller命名为oauth在此控制器写入请求授权方法:
//登录地址
public function login($type = null)
{
empty($type) && $this->error('参数错误');
//加载ThinkOauth类并实例化一个对象
$sns = ThinkOauth::getInstance($type);
//跳转到授权页面
$this->redirect($sns->getRequestCodeURL());
}
5.使用oauth/login?type=sina既可以访问授权地址
6.再写入回调方法,代码方式如下
//授权回调地址
public function callback($type = null, $code = null)
{
//支付宝code
if ('alipay' == $type) {
$code = $_GET['auth_code'];
}
(empty($type) || empty($code)) && $this->error('参数错误');
//加载ThinkOauth类并实例化一个对象
$sns = ThinkOauth::getInstance($type);
//腾讯微博需传递的额外参数
$extend = null;
if ($type == 'tencent') {
$extend = array('openid' => $this->_get('openid'), 'openkey' => $this->_get('openkey'));
}
//请妥善保管这里获取到的Token信息,方便以后API调用
//调用方法,实例化SDK对象的时候直接作为构造函数的第二个参数传入
//如: $qq = ThinkOauth::getInstance('qq', $token);
$token = $sns->getAccessToken($code, $extend);
//获取当前登录用户信息
if (is_array($token)) {
$TypeEven = new TypeEvent();
$result = $TypeEven->$type($token);
if ($result === true) {
$this->success("恭喜!使用{$type}用户登录成功!", 'center/index');
//$this->redirect('center/index');
} else {
$this->error($result);
}
}
}
7.通过访问oauth/login?type=sina,如果可以访问到微博授权页面,则说明可以获取到微博用户的基本信息。
8.获取到微博用户的基本信后,可以按照自己的业务需求来实现账号登陆和账号绑定等功能。