ThinkPHP框架接入微博实现快速登录

浏览:1570 发布日期:2017/04/18 分类:技术分享 关键字: 微博登录 第三方登录 快捷登录
继上次的在ThinkPHP框架中使用QQ的JS_SDK实现快速登录之后,这次给大家带来的是在ThinkPHP框架中接入微博快速登录。
QQ快速登录点这:http://www.dawnfly.cn/article-1-351.html

接入流程:
一、配置akey,skey和回调地址'sina_weibo_login_config'=>[
 "WB_AKEY" => '****85301',
 "WB_SKEY"  => '****63ff787194427c0cae637c4',
 "WB_CALLBACK_URL"  => 'http://www.***.cn/callback',

    //akey和skey在open.weibo.com申请成功之后获取。这里我使用了路由简化(完整地址'http://www.****.cn/Sina/callback'),看自己需要设定。
],
二、制作登录按钮图标:
在合适的页面放置如下代码即可。
其中code需要用md5加密,并且最好保证时时刷新变化的(具体待考证,反正这样不会报错!~~~) <a href="https://api.weibo.com/oauth2/authorize
    ?client_id=<?=C('sina_weibo_login_config.WB_AKEY')?>
    &redirect_uri=<?=C('sina_weibo_login_config.WB_CALLBACK_URL')?>
    &response_type=code&code=<?=md5(time())?>">
    <img src="http://www.sinaimg.cn/blog/developer/wiki/32.png" alt="" width="170"></a>
三、将微博登录的php接口文件放在Vendor目录下,我已经打包好,可以直接下载使用(文后下载附件)。

四、写回调方法callback:public function callback(){
session_start();
vendor('Sinaweibo.Saetv2');
//注意\
$o = new \SaeTOAuthV2( C('sina_weibo_login_config.WB_AKEY') , C('sina_weibo_login_config.WB_SKEY') );
                 
                //url中不能缺少code
if (isset($_REQUEST['code'])) {
$keys = array();
$keys['code'] = $_REQUEST['code'];
$keys['redirect_uri'] = C('sina_weibo_login_config.WB_CALLBACK_URL');
try {
                                //生成access token
$token = $o->getAccessToken( 'code', $keys ) ;
 
} catch (OAuthException $e) {
//echo 1;die;
}
}
 
if ($token) {
$c = new \SaeTClientV2( C('sina_weibo_login_config.WB_AKEY') , 
C('sina_weibo_login_config.WB_SKEY') , $token['access_token'] );
$ms  = $c->home_timeline(); // done
$uid_get = $c->get_uid();
$uid = $uid_get['uid'];
$user_message = $c->show_user_by_id( $uid);//根据ID获取用户等基本信息
//p($user_message);die;//到这一步可以获取用户的一些信息,以下逻辑自行扩展
 
        $nickname = $user_message['screen_name'];
        //p($nickname);die;
        $figureurl_1 = $user_message['profile_image_url'];
        if($nickname){
            $where['nickname']=$nickname;
 
            $counts = M('member_third_login')->where($where)->count();
           // echo M('member_third_login')->_sql();
            //echo $counts;die;
            if(!M('member_third_login')->where($where)->count()){
                 
                //
                //系统生成随机账号并绑定 
                $nowtime = date('ymd');
                $randorder = rand(1000,9999);
                $_account = 'wb'.$nowtime.$randorder;
                $_password = '123456';
                $_regtime=time();
                $_lastId=M('member')->add(array(
                        'account'   =>$_account,
                        'password'  =>md5($_password),
                        'regtime'   =>$_regtime
                    ));
            }
            //.......
        }
 
} else {
 
}
}
展示效果如下,欢迎一起探讨交流!~~~


附件 Saetv2.rar ( 17.76 KB 下载:135 次 )

最佳答案
评论( 相关
后面还有条评论,点击查看>>