在页面header中引入:<script type="text/javascript"
src="http://qzonestyle.gtimg.cn/qzone/openapi/qc_loader.js"
data-appid="appid" data-redirecturi="huidiaodizhi(带http)"
charset="utf-8"></script>
在body中加入下面信息:
//设置qq分享按钮
QC.Login(
{
btnId : "qqLoginBtn" //插入按钮的节点id
},
function(reqData, opts) {//登录成功
//根据返回数据,更换按钮显示状态方法
var dom = document.getElementById(opts['btnId']), _logoutTemplate = [
//头像
'<span><img src="{figureurl}" class="{size_key}"/></span>',
//昵称
'<span>{nickname}</span>',
//退出
'<span><a href="javascript:QC.Login.signOut()">退出</a></span>' ]
.join("")
dom
&&(dom.innerHTML = QC.String
.format(
_logoutTemplate,
{
nickname : QC.String
.escHTML(reqData.nickname), //做xss过滤
figureurl : reqData.figureurl
}))
},
function(opts) {//注销成功
alert("注销成功!!")
})
//调用api授权
QC.api("get_info", {
"oauth_consumer_key" : "appid" //这个可以不用传递
}).success(function(s) {
if (QC.Login.check()) {//检测是否成功登录,并弹出openid和accessToken
QC.Login.getMe(function(openId, accessToken) {
alert(openid+" "+accessToken)
})
}
})
</script>
<div class="lib_tiv shadow">
<h3 class="logo">QQ登录</h3>
</div>
第三方登陆回执的时候需要网址对吧,试试可不可以用假域名来测试。首先服务器里绑定域名的时候不要用localhost之类的了,用一个不太常见的域名,比如“baiduishishabi.com”
之后修改“C:\Windows\System32\drivers\etc\hosts”
添加一行
127.0.0.1 baiduishishabi.com
如果要用ipv6就改成
::1 baiduishishabi.com
之后你就可以通过baiduishishabi.com访问你的本地站点了。
之后在第三方登录平台的回执网址里填写“http://baiduishishabi.com/xx.php”之类的地址。
如果第三方平台不要求你认证站点归属的话,应该就可以了。如果要求的话,那就没办法了。
// 这是从那singin方法中copy过来的,只要拼一下字符串,拼出url,用ajax提交就可以了// 我copy过来的url是这个https://passport.csdn.net/ajax/accounthandler.ashx?t=log&u=xxxx&p=password&remember=0&f=http%3A%2F%2Fzhidao.baidu.com%2Fquestion%2F616465234235174812.html%3Fpush%3Dcore%26group%3D1%26qbl%3Dpush_question_0%26rprecommand%3Dc&rand=0.5584398012142628
var data = "u=" + csdn.val2(u)
+ "&p=" + csdn.val2(p)
+ "&remember=" + ($("#chkRemember").attr("checked") ? "1" : "0")
+ "&f=" + csdn.val2("f")
//+ "&enc=1"
+ "&rand=" + Math.random()
csdn.doing = true
csdn.loading($("#aLogin")[0])
$.ajax({
url: csdn.acc_handler + "?t=log&" + data
, success: signin_back
, error: function (xhr) {
signin_back(xhr.response)
}
})