三方绑定,就是将第三方账号(如qq,微信,微博)等绑定到自己的账号系统
html
<li class="bind-item">
<label>QQ</label>
{%if !empty($qq) && $qq==1%}
<b class="no-bind">已绑定</b>
<a class="bind-btn js_unbind_qq">
取消绑定
</a>
{%else%}
<b class="no-bind">未绑定</b>
<a href="/auth/qq/?type=bind" class="bind-btn">
绑定账号
</a>
{%/if%}
</li>
调取三方授权的php
class AuthController extends BaseController
{
public function qqAction()
{
$type = $this->_request->getQuery('type', '', 'trim');
Yaf_Loader::import('ApiLogin/QQ.php');
$QQ = new QQ($type);
$url = $QQ->getRequestCodeURL();
$this->redirect($url);
}
}
绑定的php逻辑
public function qqAction()
{
$code = $this->_request->getQuery('code');
Yaf_Loader::import('ApiLogin/QQ.php');
$qq = new QQ("bind");
$token = $qq->getAccessToken($code);
$bind_id = $qq->getOpenId($token);
$result = Service_User_InfoModel::checkIsFirst(TYPE_QQ, $bind_id);
if (empty($result)) {
$this->renderLogin($this->_loginUserId, TYPE_QQ, $bind_id);
} else {
$this->redirect("/info/bind/?msg=" . "绑定失败,该账号已被其他实车用户绑定");
}
}
绑定的js(基于seajs框架)
define('module/ucenter/bind_account.js', ['libs/form'], function (require, exports, module) {
var form = require('libs/form.js');
var _dom = {
btn_qq: $('.js_unbind_qq'),
}
var _url = {
post_submit: '/info/unbind/',
success_url: '/info/bind/',
}
// 绑定类型 1:微信 2:QQ 3:微博
_dom.btn_weixin.on('click', function () {
var data = {
type: 1,
};
postData(data);
});
function postData(data) {
requestUrl(_url.post_submit, data, function () {
location.href = _url.success_url;
});
}
function init() {
if (msg != 'empty') {
$.dialog.successTips(msg);
}
}
init();
});