网站做QQ联合登陆js获取qq昵称的疑问

wangyi_feiyang 2013-06-05 09:12:46
我在做QQ联合登陆的时候,想通过js获取到QQ昵称存到数据库,为什么我总是获取不到QQ昵称呢,js不太熟悉,请高手帮忙,谢谢。


aspx文件

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript" src="http://qzonestyle.gtimg.cn/qzone/openapi/qc_loader.js" charset="utf-8" data-callback="true"></script>
<script src="/js/qq.js" type="text/javascript"></script>
</head>
<body>
<form id="form1" runat="server">
<div>
<script type="text/javascript"> getToken()</script>
</div>
</form>
</body>
</html>


js文件

var arrqq = new Array();
arrqq[0] = "1";
arrqq[1] = "11";
arrqq[2] = "111";

function getnickname() {
if (QC.Login.check()) {
QC.api("get_user_info", paras)
.success(function (s) {//成功回调
alert("获取用户信息成功!当前用户昵称为:" + s.data.nickname);
arrqq[2] = s.data.nickname;
//return s.data.nickname;
alert(arrqq[2]);
})
.error(function (f) {//失败回调
//alert("获取用户信息失败!");
})
.complete(function (c) {//完成请求回调
//alert("获取用户信息完成!");
});
} else {
alert("请登录后体验");
}
}

function getToken() {
if (QC.Login.check()) {
QC.Login.getMe(function (openId, accessToken) {
//alert(["当前登录用户的", "openid为:" + openId, "accessToken为:" + accessToken].join("\n"));
arrqq[0] = [openId];
arrqq[1] = [accessToken];

this.getnickname();

var xmlhttp;
try {
xmlhttp = new XMLHttpRequest();
} catch (e) {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function () {
if (4 == xmlhttp.readyState) {
if (200 == xmlhttp.status) {
var result = xmlhttp.responseText;
if (result != "") {
}
else {
}
window.opener.location.href = "/index.aspx";
}
}
}
xmlhttp.open("get", "/QQ.aspx?openId=" + arrqq[0] + "&accesstoken=" + arrqq[1] + "&nickname=" + arrqq[2], false);
xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xmlhttp.send("");
});
}
else {
window.opener.location.href = "/index.aspx";
}
}


qq登陆开发文档参考
http://wiki.opensns.qq.com/wiki/%E3%80%90QQ%E7%99%BB%E5%BD%95%E3%80%91JS_SDK%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E
http://connect.qq.com/intro/login/jssdk-demo
...全文
2043 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
songhongjunxuexi 2014-06-03
  • 打赏
  • 举报
回复
请问下楼主 s.data.nickname能获取到称
谢无双哥哥 2013-06-27
  • 打赏
  • 举报
回复
问个小问题哈,我照小狼你的办法,加了调用JS的代码,和QQ按钮的代码,但更新完了服务器里的代码后,依然打开没有按钮,虽然源码里显示有代码,是又是为什么呢?难道是QQ没审核通过我的网站?
chenguang79 2013-06-07
  • 打赏
  • 举报
回复
如果你现在可以取得到昵称,你把你的请求写在得到这个昵称之后
chenguang79 2013-06-07
  • 打赏
  • 举报
回复
兄弟,调用QQ第三方登录这些JS代码,不是你随便写的,是QQ已经给你写好的API,你调用就行了.你要干什么,可以在相应的调用方法中,加上一两句自己的代码,这些api的名字和调用方法是不能随便写改的 http://blog.csdn.net/chenguang79/article/details/8479564#comments 你仔细看一下这里的代码吧.你在这个代码的基础上一点一点的改吧.
wangyi_feiyang 2013-06-05
  • 打赏
  • 举报
回复
能获取到昵称,但是执行 是在我的ajax请求之后,这个应该是异步调用我不太熟悉,不知道怎么处理,哪位朋友指导下。
Null_Reference 2013-06-05
  • 打赏
  • 举报
回复
接口应该会返回昵称吧? http://wiki.opensns.qq.com/wiki/%E3%80%90QQ%E7%99%BB%E5%BD%95%E3%80%91get_user_info .success(function (s) {//成功回调 alert("获取用户信息成功!当前用户昵称为:" + s.data.nickname); 返回的应该是个json串,应该不要data吧 直接 s.nickname 试试!
wangyi_feiyang 2013-06-05
  • 打赏
  • 举报
回复
自己顶。。。。。。。。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧