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 次 )
最佳答案
