APP开发接近尾声.却在即将发布的时候发现APP 的QQ登陆授权凭证 和WEB版本无法共用...要了亲命了...于是各种搜索..下面吧解决办法分享给大家.
-
首先,要用发一个邮件 给腾讯互联平台客服 connect@qq.com,说明要APP共用数据,进行应用 APPID合并 分别提供WEB/手机应用的 APPID/appkey.并提供网站的ICP备案查询截图以及帐号认证的营业执照什么的.并且告知,以某一个APPID的用户数据为原有的主应用.
-
如果上述的邮件进行正常.会受到客服回信.已经批准什么的 邮件还会说明启用共用unionid .... 并且可通过接口进行获取:https://graph.qq.com/oauth2.0/me?access_token=ACCESSTOKEN&unionid=1....
不过HB 的第三方登陆,QQ授权并未封装获取unionid 的方法.所以,要自己再次获得授权用户的unionid..好在这部分简单得很
/*
* 获取QQ登陆unionID
*/
function getQQunionID(ACCESSTOKEN,callback)
{
mui.ajax({
url: "https://graph.qq.com/oauth2.0/me?access_token="+ACCESSTOKEN+"&unionid=1",
async: true,
crossDomain: true, //强制使用5+跨域
type: 'get',
timeout: 50000,
success: function(data) {
if(data.indexOf("error")<=-1)
{
eval(data);
}
else{
mui.toast("QQ unionID凭证获取错误:"+data);
}
},
error: function(xhr, type, errorThrown) {
mui.toast("QQ unionID凭证网络访问错误:"+type);
}
});
}
拿去用吧:ACCESSTOKEN 是用户的ACCESSTOKEN,callback 回调方法...
这个接口访问的时候返回的是字符串:callback({appid:XXX,openid:XXX,unionid:XXX}); 所以直接eval......
看到此不要高兴得太早,如果你原来有应用的APP并且有留存用户数据...那么好了 OPENID 还是每个APPID 不同的 ,只有unionid 才会相同....怎么解? 经过各种折腾...才知道 再次回复腾讯邮件 说明需要 申请 存量用户 转为 unionid 的临时接口, 再次提供 临时接口使用的APPID 和APPKEY...然后就等着回复把..
最后怎样?写个程序 按照再次回复中临时接口的使用方法,遍历所有每个用户的原有OPENID ,再查询到新的 unionid,然后更新原有登陆凭证...
最后别忘记 如果原有登陆是WEB端...要更改登陆逻辑.需要再次获取 unionid 并储存.
这样才能保证WEB APP 等等登陆凭证的统一性.....
虽然以上解决看起来很简单.不过在网上确实没有一篇文章进行系统性的说明....都是本人一步步查..问客服才最终走到最后一步,记录下来 希望能够帮助遇到此问题倒霉程序员们吧....
5 个评论
要回复文章请先登录或注册
XHH
5***@qq.com
[已删除]
3***@163.com
v***@163.com