重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
使用人人网开发平台提供的API,人人网上有详细说明和示例,希望对你有帮助。
为永吉等地区用户提供了全套网页设计制作服务,及永吉网站建设行业解决方案。主营业务为成都网站设计、成都做网站、外贸网站建设、永吉网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
你的所谓联合登录应该就是单点登录(SSO)吧,有几个思路,供参考:
1、利用现有开源项目,见:;scope=project,另外,耶鲁大学有个SSO开源项目叫CAS,很不错。
2、如果你的系统在同一个域下,一个比较简单的办法是利用cookie,在登录入口把用户帐号信息写到cookie里面,然后在各个系统中从cookie里面取出来进行认证,可能会对各个系统进行一些必要的改造~
方法/步骤
准备工作
在正式接入之前你需要了解以下名词的含义:
1. appid :应用的唯一标识。在OAuth2.0认证过程中,appid的值即为oauth_consumer_key的值。
2. appkey:appid对应的密钥,访问用户资源时用来验证应用的合法性。在OAuth2.0认证过程中,appkey的值即为oauth_consumer_secret的值。
3. redirecturl:成功授权后的回调地址,必须是注册appid时填写的主域名下的地址,建议设置为网站首页或网站的用户中心。注意需要将url进行URLEncode。
4. access token:用来判断用户在本网站上的登录状态,具有3个月有效期,用户再次登录时自动刷新。
5. openid:是此网站上唯一对应用户身份的标识,网站可将此ID进行存储便于用户下次登录时辨识其身份,或将其与用户在网站上的原有帐号进行绑定。
第一步
要接入QQ登录,必不可少的是appid和appkey,通过申请接入QQ登录,按照相应步骤操作即可轻松获得,在此不做赘述。
第二步
在需要放置QQ登录按钮的页面加入下面SCRIPT代码:
script type="text/javascript" src="" data-appid="APPID" data-redirecturi="REDIRECTURI" charset="utf-8"/script
PS:APPID 和 REDIRECTURI 换成第一步申请所得到的对应内容,REDIRECTURI 就是登录之后返回的回调地址,在申请页面自己填写,一般写网站主域名即可。注意:回调地址必须以http或https开头。
第三步
在页面放置一个元素节点用来展现登录按钮,并且指定其ID,如:
div id="qq"/div
然后在页面加入如下SCRIPT:
script type="text/javascript"
QC.Login({
btnId:"qq" //插入按钮的节点id
});
/script
这时就可以在页面看到如下效果:
如对这个展示效果不满意,也可以自定义登录按钮。
第四步
在 REDIRECTURI 即回调地址页面加入如下SCRIPT:
script type="text/javascript"
src="" charset="utf-8" data-callback="true"/script
另外:官方说法如果回调地址页与加入QQ登录按钮是同一个页面,则只需要引用一次脚本文件。如果理解不了这种官方说法,可以在第一步的脚本中加入data-callback="true"属性,而忽略第四步,前提是回调地址页与加入QQ登录按钮的页面是同一个页面。
第五步
因为JS SDK封装了获取Access Token以及OpenID的方法,因此开发者不需要用开发代码进行获取,直接调用QQ登录OpenAPI即可。
调用OpenAPI时,请统一遵循下述调用方式:
QC.api(api, paras, fmt, method)
参数说明:
最后
提供一种代码接入思路,仅供参考:
QC.api("get_user_info", {}) //get_user_info是API参数
//指定接口访问成功的接收函数,s为成功返回Response对象
.success(function (s) {
//成功回调,通过s.data获取OpenAPI的返回数据
nick = s.data.nickname; //获得昵称
headurl = s.data.figureurl_qq_1; //获得头像
if (QC.Login.check()) {//判断是否登录
QC.Login.getMe(function (openId, accessToken) { //这里可以得到openId和accessToken
//下面可以调用自己的保存方法
……
});
}
})
//指定接口访问失败的接收函数,f为失败返回Response对象
.error(function (f) {
//失败回调
alert("获取用户信息失败!");
});
////指定接口完成请求后的接收函数,c为完成请求返回Response对象
//.complete(function (c) {
// //完成请求回调
// alert("获取用户信息完成!");
//});