网页授权获取用户基本信息

跳转到: 导航, 搜索

常规授权流程

新浪微博支持OAuth2.0授权流程,具体请参考 授权机制


不弹出授权页面的快速获取uid的流程

在粉丝服务平台中,用户跳转到第三方H5页面后,很多时候第三方仅仅想获取到用户的uid信息,并且不希望弹出授权页面从而提高转化率;在这种情况下,第三方可以通过加入snsapi_base应用授权作用域参数来使用不弹出授权页面的快速授权流程:

1. 使用snsapi_base(不弹出授权页面,直接跳转,只能获取用户uid)这个scope来引导需要授权的用户到如下地址

https://api.weibo.com/oauth2/authorize?client_id=YOUR_CLIENT_ID&response_type=code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&scope=snsapi_base

如果用户同意授权,页面跳转至 YOUR_REGISTERED_REDIRECT_URI/?code=CODE

需要特别注意的是

第一,第三方需要通过UA判断用户来自PC端还是来自移动端; 如果用户来自移动端,则需要使用open.weibo.cn上的授权接口,并且添加下display=mobile参数,调用地址如下:

https://api.weibo.cn/oauth2/authorize?client_id=YOUR_CLIENT_ID&display=mobile&response_type=code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&scope=snsapi_base

第二,snsapi_base与其他scope权限是互斥关系,也就是如果传入snsapi_base,微博平台就不识别其余的scope参数; 更多关于scope的知识,可以参考http://open.weibo.com/wiki/Scope


2. 用code换取uid

接下来,第三方可通过下述接口来获取用户uid,snsapi_base式的网页授权流程即到此为止。

https://api.weibo.com/oauth2/access_token?client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&grant_type=authorization_code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&code=CODE

(其中client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET可以使用basic方式加入header中)

正确时返回JSON数据包如下:

{ 
"access_token":"",   //走snsapi_base式的网页授权流程,则access_token字段为空
"remind_in":3600, 
"expires_in":3600,
"uid":"UID",
"scope":"snsapi_base"
}