有千峰视频微博第三方登录的截图(在另外一篇文章我单独发出来)
下面发我做出来的源码(sdk的两个类拆出来分别存放到extend文件里面),
还有
WB_AKEY,WB_SKEY,WB_CALLBACK_URL,这三个都要在extra里面单独建一个文件return你有的账号密码以及回调用地址
我的目录格式如下:
这个我调试的时候出了不少问题(一直刷新同一个页面),后来发现获取授权传回来的code是只能用一次的,同一个页面(我是在回调函数那里一直报错)一直刷新,还一直找不到exception的抛出异常的类,其实那个传回来的code是只能使用一次的,同一个code,在callback里面获取不了access_token的值(参数传过去微博那边认证会报错,因为是同一个),所以调试完再重新登录吧.....
<?php namespace app\api\controller; use think\Controller; use think\Session; use think\Request; use sina\SaeTOAuthV2; use sina\SaeTClientV2; class sinalogin extends Controller { private $wb_akey; private $wb_skey; private $wb_callback_url; public function __construct(){ parent::__construct(); $this->wb_akey = config('weibo.WB_AKEY'); $this->wb_skey = config('weibo.WB_SKEY'); $this->wb_callback_url = config('weibo.WB_CALLBACK_URL'); } public function weibo()//给登录图标一个验证链接 { print_r($this->wb_callback_url);exit(); $o=new SaeTOAuthV2($this->wb_akey,$this->wb_skey); $code_url=$o->getAuthorizeURL( $this->wb_callback_url,$response_type = 'code',$display = 'popup'); // $this->assign ('code_url', $code_url); return $this->redirect($code_url); } public function callback(){ $o =new SaeTOAuthV2($this->wb_akey,$this->wb_skey); $key=array(); $param=Request::instance()->param(); //dump($param);检查是可以获取那些参数 $keys['code']=$param['code']; $keys['redirect_uri']=$this->wb_callback_url; $token=$o->getAccessToken('code',$keys); // $o=new SaeTClientV2($this->wb_akey,$this->wb_skey,Session::get('token')['access_token']); // $uid_get=$o->get_uid(); // dump($uid_get); // exit(); // $uid=$uid_get['uid'];//这些是我本来以为token里面没有uid,后来调用操作类去重新获取,没想到认证类已经把uid传在token里面了 if($token){ Session::set('token',$token);//放进session return $this->redirect('account/reginfo');//成功返回calllback }else{ return $this->error('授权失败'); } } }