QQ 后台方式的登录验证
取得授权码 authorize_code
https://graph.qq.com/oauth2.0/authorize (GET)
参数 | 必须与否 | 描述 |
response_type | 必须 | 此值固定为“code”。 |
client_id | 必须 | 申请QQ登录成功后,分配给应用的appid。 |
redirect_uri | 必须 | 成功授权后的回调地址,域名 + 回调接口(URLEncode)。 |
state | 必须 | client端的状态值。用于第三方应用防止CSRF攻击,自定义的值。 |
scope | 可选 | 请求用户授权时向用户显示的可进行授权的列表。 例如:scope=get_user_info,list_album,upload_pic,do_like |
display | 可选 | 仅PC网站接入时使用。默认展示为PC下的样式。 |
g_ut | 可选 | 仅WAP网站接入时使用。 QQ登录页面版本(1:wml版本; 2:xhtml版本),默认值为1。 |
用户授权成功
http://.../callback.action?code=9A5F************************06AF&state=test
用户没授权:
根据授权码取得access_token
https://graph.qq.com/oauth2.0/token (GET)
参数 | 是否必须 | 含义 |
grant_type | 必须 | 授权类型,此值固定为“authorization_code”。 |
client_id | 必须 | 网站的appid。 |
client_secret | 必须 | 网站的appkey。 |
code | 必须 | 上一步返回的authorization code。 注意此code会在10分钟内过期。 |
redirect_uri | 必须 | 与上面一步中传入的redirect_uri保持一致。 |
成功取码:
access_token=FE04************************CCE2&expires_in=7776000
失败:
返回code和msg字段,以url参数对的形式返回,value部分会进行url编码
根据access_token获得对应用户身份的openid
https://graph.qq.com/oauth2.0/me (GET)
参数 | 是否必须 | 含义 |
access_token | 必须 | 在Step1中获取到的access token。 |
查询成功:
- callback( {"client_id":"YOUR_APPID","openid":"YOUR_OPENID"} );
查询失败:
- 通用错误码
调用openid并访问资源
access_token=<token>& oauth_consumer_key=<appkey>& opened=<user_openid>
参数:
YOUR_APP_ID: appid(如222222)
YOUR_ACCESS_TOKEN:Step1获取到的access token,必须保证未过期(如E0632E6CE12AC709999)
YOUR_OPENID:Step2获取到的openid,用户唯一标识(如B9DD537D1C5C98A9999)
- https://graph.qq.com/user/get_user_info? (GET)
- access_token=*************& oauth_consumer_key=12345& openid=****************& format=json
- {
- "ret":0, // 返回码
- "msg":"", // 错误信息,red<0
- "nickname":"Peter", //呢称
- "figureurl":"http://qzapp.qlogo.cn/qzapp/111111/942FEA70050EEAFBD4DCE2C1FC775E56/30", //30x30
- "figureurl_1":"http://qzapp.qlogo.cn/qzapp/111111/942FEA70050EEAFBD4DCE2C1FC775E56/50", //50x50
- "figureurl_2":"http://qzapp.qlogo.cn/qzapp/111111/942FEA70050EEAFBD4DCE2C1FC775E56/100",//100x100
- "gender":"男",//性别
- "vip":"1", //黄钻用户
- "level":"7",//黄钻等级
- "is_yellow_year_vip":"1"//年费黄钻用户
- }
Weibo后台方式的登录验证
http://open.weibo.com/wiki/%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6%E8%AF%B4%E6%98%8E
获得授权码
https://api.weibo.com/oauth2/authorize (GET/POST)
client_id | 必须 | string | AppKey。 |
redirect_uri | 必须 | string | 授权回调地址 |
scope | 可选 | string | 申请scope权限所需参数,可一次申请多个scope权限,用逗号分隔。 |
state | 可选 | string | 防止跨站请求伪造(CSRF)攻击,第三方自定义串 |
display | 可选 | string | 授权页面的终端类型,取值见下面的说明。 {default->web page, mobile , wap, client, apponweibo ->站内 } |
forcelogin | 可选 | boolean | 是否强制用户重新登录,true:是,false:否。默认false。 |
language | 可选 | string | 授权页语言,缺省为中文简体版,en为英文版。 |
成功:
失败:
- { "error":"desc", "error_code":123456, "error_description":"desc" }
根据授权码获取access_token
https://api.weibo.com/oauth2/access_token (POST)
| 必选 | 类型及范围 | 说明 |
client_id | true | string | 申请应用时分配的AppKey。 |
client_secret | true | string | 申请应用时分配的AppSecret。 |
grant_type | true | string | 请求的类型,填写authorization_code |
grant_type为authorization_code时
| 必选 | 类型及范围 | 说明 |
code | true | string | 调用authorize获得的code值。 |
redirect_uri | true | string | 回调地址,需需与注册应用里的回调地址一致。 |
成功调用则返回:
- {"access_token": "token.. ", "expires_in": 1234, "remind_in":"798114", "uid":"12341234" }
不成功则:
- { "error":"desc", "error_code":123456, "error_description":"desc" }
根据token查询用户的信息及资源
https://api.weibo.com/oauth2/get_token_info (POST)
| 必选 | 类型及范围 | 说明 |
access_token | true | string | access_token |
成功返回值:
- { "uid": 1073880650, "appkey": 1352222456, "scope": null,"create_at": 1352267591, "expires_in": 157679471 }
失败返回值:
- { "error":"desc", "error_code":123456, "error_description":"desc" }
豆瓣后台方式的登录验证
http://developers.douban.com/wiki/?title=oauth2#server_side_flow
获取授权码
https://www.douban.com/service/auth2/auth (GET)
参数名称 | 参数说明 | |
client_id | 必选 | APIKey |
redirect_uri | 必选 | 回调地址,此地址必须与在应用注册时填写的回调地址一致。 |
response_type | 必选 | 此值可以为 code 或者 token。 |
scope | 可选 | 申请权限的范围,缺省的scope。 如果申请多个scope,使用逗号分隔。 |
state | 可选 | 第三方自定义参数。 |
成功:
不成功:
获取access_token
https://www.douban.com/service/auth2/token (POST)
参数名称 | 参数说明 | |
client_id | 必选 | APIKey |
client_secret | 必选 | 对应于豆瓣secret |
redirect_uri | 必选 | 回调地址 |
grant_type | 必选 | 此值可以为 authorization_code 或者 refresh_token 。 |
code | 必选 | authorization_code |
成功:
- { "access_token":"<token>", "expires_in":3920, "refresh_token":"<token2>", "douban_user_id":"<user-id>"}
失败:
- {"msg":"uri_not_found", "code":1001, "request":"GET \/v2\/photo\/132"}
获取当前用户信息
https://api.douban.com/v2/user/~me (GET)
重要注意事项:
- 必须用GET方法
- l必须将token放在请求的header里,key = “Authorization”, value=”Bearer token…”的方式放入header.
成功:
- { "loc_id":"118281", "name":"名称", "created":"<创建日期>", "loc_name":"地区", "avatar":"图标", "signature":"签名", "uid":"账号", "alt":"链接地址", "id":"63867659", "desc":""}
失败:
- {"msg":"uri_not_found", "code":1001, "request":"GET \/v2\/photo\/132"}
举例方式:
curl "https://api.douban.com/v2/user/~me" -H "Authorization: Bearer a14afef0f66fcffce3e0fcd2e34f6ff4"