新浪微博,腾讯微博,腾讯QQ登录

不管是新浪微博还是腾讯微博还是腾讯QQ,平台的接入都是以App key以及Appsercrit为基础返回一个connectid。程序再接收到这个conectid会从数据库中做个查询。whereconnectid="" andfrom="sina",如果存在,代表这个账户已经跟某账户已经绑定成功。可以进一步通知查询出账户的用户名通知uc同步登陆,然后设置cookie或者session。
$this->_init_phpsso();
$synloginstr=$this->client->ps_member_synlogin($r['phpssouid']);
如果不存在,代表还没有绑定,都已都跳转到connect页面,但在这里需要设置session
$_SESSION = array();
$_SESSION['connectid'] = $me['id'];
$_SESSION['from'] = 'sina';
$connect_username = $me['name'];
include template('member', 'connect');
在这个页面中,如果绑定新账号,相当于重新注册了个账户,只是将connectid跟from一并写入了数据表中。如果绑定新账号,则让用户输入账户的用户名跟密码,如果验证成功,则将connectid跟from更新入库。
以上是原理,来实际操作中可能就没这么简单了,在MVC中,我们可以建立三个方法
public_sina_login,pulic_tqq_login,public_qq_login三个方法来处理三者的登陆
在用户未post之前,展现给用户的就是三个connect_sina.html,connect_tqq.html,connect_qq.html,其实也没啥高深的,三个按钮点后就提交到了public_sina_login,pulic_tqq_login,public_qq_login方法中,



http://open.weibo.com/wiki/SDK
http://wiki.open.t.qq.com/index.php/SDK%E4%B8%8B%E8%BD%BD#PHP_SDK
http://wiki.open.qq.com/wiki/website/SDK%E4%B8%8B%E8%BD%BD
什么时回调地址,也就是授权通过后跳转的地址,这个地址是能够接受access_token的地址就行了。其实OAUTH2最关键的就是先通过akey跟skey生成


define('WB_AKEY', pc_base::load_config('system', 'sina_akey'));
define('WB_SKEY', pc_base::load_config('system', 'sina_skey'));
pc_base::load_app_class('weibooauth', '' ,0);
$this->_session_start();
if(isset($_GET['callback']) && trim($_GET['callback'])) {
$o = new WeiboOAuth(WB_AKEY, WB_SKEY, $_SESSION['keys']['oauth_token'], $_SESSION['keys']['oauth_token_secret']);
$_SESSION['last_key'] = $o->getAccessToken($_REQUEST['oauth_verifier']);
$c = new WeiboClient(WB_AKEY, WB_SKEY, $_SESSION['last_key']['oauth_token'], $_SESSION['last_key']['oauth_token_secret']);
//获取用户信息
$me = $c->verify_credentials();


define('QQ_AKEY', pc_base::load_config('system', 'qq_akey'));
define('QQ_SKEY', pc_base::load_config('system', 'qq_skey'));
pc_base::load_app_class('qqoauth', '' ,0);
$this->_session_start();
if(isset($_GET['callback']) && trim($_GET['callback'])) {
$o = new WeiboOAuth(QQ_AKEY, QQ_SKEY, $_SESSION['keys']['oauth_token'], $_SESSION['keys']['oauth_token_secret']);
$_SESSION['last_key'] = $o->getAccessToken($_REQUEST['oauth_verifier']);


define('SNDA_AKEY', pc_base::load_config('system', 'snda_akey'));
define('SNDA_SKEY', pc_base::load_config('system', 'snda_skey'));
define('SNDA_CALLBACK', urlencode(APP_PATH.'index.php?m=member&c=index&a=public_snda_login&callback=1'));
pc_base::load_app_class('OauthSDK', '' ,0);
$this->_session_start();        
if(isset($_GET['callback']) && trim($_GET['callback'])) {
$o = new OauthSDK(SNDA_AKEY, SNDA_SKEY, SNDA_CALLBACK);
$code = $_REQUEST['code'];
$accesstoken = $o->getAccessToken($code);



$appid = pc_base::load_config('system', 'qq_appid');
$appkey = pc_base::load_config('system', 'qq_appkey');
$callback = pc_base::load_config('system', 'qq_callback');
pc_base::load_app_class('qqapi','',0);
$info = new qqapi($appid,$appkey,$callback);
$this->_session_start();
if(!isset($_GET['oauth_token'])){
$info->redirect_to_login();
}else{
$info->get_openid();//调取QQ openid值

下面是两篇oauth2的教程,虽然是针对phpcms的,不过思路一样
http://bbs.phpcms.cn/forum.php?mod=viewthread&tid=814511&highlight=oauth2
http://bbs.phpcms.cn/forum.php?mod=viewthread&tid=878885&highlight=oauth2


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值