此接口用于获取个人信息。开发者可通过openid来获取用户的基本信息。特别需要注意的是,如果开发者拥有多个移动应用、网站应用,可通过获取用户的unionid来区分用户的唯一性,因为只要是同一qq互联平台下的不同应用,unionid是相同的。换句话说,同一用户,对同一个qq互联平台下的不同应用,unionid是相同的。(已支持云顶集团3118官网自助获取:)
(一)https请求方式:get
https://graph.qq.com/oauth2.0/me?access_token=accesstoken&unionid=1
参数 | 是否必需 | 说明 |
---|---|---|
access_token | 是 | 用户凭证 |
unionid | 否 | 是否申请unionid |
fmt | 否 | 因历史原因,默认是jsonpb格式,如果填写json,则返回json格式 |
返回说明:
正确的返回结果(如果fmt参数未指定json)
callback( { "client_id":"your_appid", "openid":"your_openid", "unionid":"your_unionid" } );
错误的(如果fmt参数未指定json)返回示例
callback( { "error":100016, "error_description":"access token check failed", } );
错误码 | 描述 | 说明 |
---|---|---|
100016 | access token check failed | 用户凭据过期(30天)或者不正确 |
100048 | companyid not set | 未申请unionid接口调用权限,请邮件申请 |
(二)android_sdk 请求方式:
调用获取unionid信息接口的示例代码如下
private void getunionid() { if (mtencent != null && mtencent.issessionvalid()) { iuilistener listener = new iuilistener() { @override public void onerror(uierror e) { toast.maketext(mainactivity.this,"onerror",toast.length_long).show(); } @override public void oncomplete(final object response) { if(response != null){ jsonobject jsonobject = (jsonobject)response; try { string unionid = jsonobject.getstring("unionid"); util.showresultdialog(mainactivity.this, "unionid:\n" unionid, "oncomplete"); util.dismissdialog(); }catch (exception e){ toast.maketext(mainactivity.this,"no unionid",toast.length_long).show(); } }else { toast.maketext(mainactivity.this,"no unionid",toast.length_long).show(); } } @override public void oncancel() { toast.maketext(mainactivity.this,"oncancel",toast.length_long).show(); } }; unioninfo unioninfo = new unioninfo(this, mtencent.getqqtoken()); unioninfo.getunionid(listener); } else { toast.maketext(this,"please login frist!",toast.length_long).show(); } }
返回说明:
正确的返回结果
{ "client_id":"your_appid", "openid":"your_openid", "unionid":"your_unionid" }
(三)ios_sdk 请求方式:
调用获取unionid信息接口的示例代码如下
bool bret = [[[sdkcall getinstance] oauth] requestunionid]; if (!bret) { uialertview *alertview = [[uialertview alloc] initwithtitle:@"提示" message:@"信息不足,请先登录。" delegate:nil cancelbuttontitle:@"好的" otherbuttontitles:nil, nil]; [alertview show]; __release(alertview); }
返回说明:
如果获取成功会在tencentlogindelegate的didgetunionid回调中回调,最后在oauth实例中获取,正确的返回结果
nsstring *result = [nsstring stringwithformat:@"获取成功 appid = %@,\n openid = %@,\n unionid = %@", [[sdkcall getinstance].oauth.appid], [sdkcall getinstance].oauth.openid, [sdkcall getinstance].oauth.unionid];
说明 | |
---|---|
client_id | 应用唯一标识 |
openid | qq用户在应用的唯一账号标识,同一个用户在不同应用的openid不一样。 |
unionid | qq用户在开发者在多个应用间(打通后)的标识,打通后,不同应用的unionid一样 |
(1)开发者应该注意保存openid、unionid信息,以便以后在不同应用之间进行用户信息互通;
(2)同一开发者名下最多支持60个应用进行unionid打通,请开发者申请时注意;
(3) unionid至少是36个字节长度,建议开发者预留64字节存储空间。
编辑:yimen,如若转载,请注明出处:https://www.yimenapp.com/kb-yimen/14472/
部分内容来自网络投稿,如有侵权联系立删