pc端和移動端整合第三方快捷登入 --- 微博為例
通過新浪微博的開放平臺去註冊一個應用。
之後你會得到一個App Key和一個App Secret。擁有它們,你才可以申請許可權。
2、在高階資訊中編輯授權回撥頁,這裡與後面程式碼裡的回撥地址要一致
3、 微博登入標識的地址如下:
https://api.weibo.com/oauth2/authorize?client_id=YOUR_CLIENT_ID&response_type=code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI
引數
必選 |
型別及範圍 |
說明 | |
---|---|---|---|
client_id |
true |
string |
申請應用時分配的AppKey。 |
redirect_uri |
true |
string |
授權回撥地址,站外應用需與設定的回撥地址一致,站內應用需填寫canvas page的地址。 |
response_type |
false |
string |
code |
返回值
返回值欄位 |
欄位型別 |
欄位說明 |
---|---|---|
code |
string |
用於第二步呼叫oauth2/access_token介面,獲取授權後的access token。 |
state |
string |
如果傳遞引數,會回傳該引數。 |
4、點選你的工程微博登入按鈕開啟授權頁面,如果使用者同意授權,頁面跳轉至 YOUR_REGISTERED_REDIRECT_URI/?code=CODE
跳轉地址:紅色部分為微博pc端授權地址,移動端授權介面地址:https://open.weibo.cn/oauth2/authorize
app:
pc:
//同意授權後會重定向
http://www.example.com/response&code=CODE
示例:http://www.xxxxx.com/callback.php?code=1f5848d0562f39fbbaf8d35cbc853ea3
5、get獲取code值,用CURL方式請求Access Token(這裡可以走本地伺服器也就是自己的後臺介面進行登入)
請求地址:
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
請求方式:
POST
請求引數:
必選 |
型別及範圍 |
說明 |
|
---|---|---|---|
client_id |
true |
string |
申請應用時分配的AppKey。 |
client_secret |
true |
string |
申請應用時分配的AppSecret。 |
grant_type |
true |
string |
請求的型別,填寫authorization_code |
code |
ture |
string |
呼叫authorize獲得的code值。 |
rediect_url |
ture |
string |
回撥地址,需需與註冊應用裡的回撥地址一致。 |
返回值
{
"access_token": "SlAV32hkKG",
"remind_in": 3600,
"expires_in": 3600,
"uid":1887188234
}
6、使用獲得的Access Token和uid呼叫API
獲取使用者資訊API:
https://api.weibo.com/2/users/show.json
請求引數:
必選 |
型別及範圍 |
說明 |
|
---|---|---|---|
access_token |
true |
string |
採用OAuth授權方式為必填引數,OAuth授權後獲得。 |
uid |
false |
int64 |
需要查詢的使用者ID。 |
screen_name |
false |
string |
需要查詢的使用者暱稱。 |
引數uid與screen_name二者必選其一,且只能選其一;
返回示例:
{
"id": 1404376560,
"screen_name": "zaku",
"name": "zaku",
"province": "11",
"city": "5",
"location": "北京 朝陽區",
"description": "人生五十年,乃如夢如幻;有生斯有死,壯士復何憾。",
"url": "http://blog.sina.com.cn/zaku",
"profile_image_url": "http://tp1.sinaimg.cn/1404376560/50/0/1",
"domain": "zaku",
"gender": "m",
"followers_count": 1204,
"friends_count": 447,
"statuses_count": 2908,
"favourites_count": 0,
"created_at": "Fri Aug 28 00:00:00 +0800 2009",
"following": false,
"allow_all_act_msg": false,
"geo_enabled": true,
"verified": false,
"status": {
"created_at": "Tue May 24 18:04:53 +0800 2011",
"id": 11142488790,
"text": "我的相機到了。",
"source": "<a href="http://weibo.com" rel="nofollow">新浪微博</a>",
"favorited": false,
"truncated": false,
"in_reply_to_status_id": "",
"in_reply_to_user_id": "",
"in_reply_to_screen_name": "",
"geo": null,
"mid": "5610221544300749636",
"annotations": [],
"reposts_count": 5,
"comments_count": 8
},
"allow_all_comment": true,
"avatar_large": "http://tp1.sinaimg.cn/1404376560/180/0/1",
"verified_reason": "",
"follow_me": false,
"online_status": 0,
"bi_followers_count": 215
}
返回值:
返回值欄位 |
欄位型別 |
欄位說明 |
---|---|---|
id |
int64 |
使用者UID |
idstr |
string |
字串型的使用者UID |
screen_name |
string |
使用者暱稱 |
name |
string |
友好顯示名稱 |
province |
int |
使用者所在省級ID |
city |
int |
使用者所在城市ID |
location |
string |
使用者所在地 |
description |
string |
使用者個人描述 |
url |
string |
使用者部落格地址 |
profile_image_url |
string |
使用者頭像地址(中圖),50×50畫素 |
profile_url |
string |
使用者的微博統一URL地址 |
domain |
string |
使用者的個性化域名 |
weihao |
string |
使用者的微號 |
gender |
string |
性別,m:男、f:女、n:未知 |
followers_count |
int |
粉絲數 |
friends_count |
int |
關注數 |
statuses_count |
int |
微博數 |
favourites_count |
int |
收藏數 |
created_at |
string |
使用者建立(註冊)時間 |
following |
boolean |
暫未支援 |
allow_all_act_msg |
boolean |
是否允許所有人給我發私信,true:是,false:否 |
geo_enabled |
boolean |
是否允許標識使用者的地理位置,true:是,false:否 |
verified |
boolean |
是否是微博認證使用者,即加V使用者,true:是,false:否 |
verified_type |
int |
暫未支援 |
remark |
string |
使用者備註資訊,只有在查詢使用者關係時才返回此欄位 |
status |
object |
使用者的最近一條微博資訊欄位 詳細 |
allow_all_comment |
boolean |
是否允許所有人對我的微博進行評論,true:是,false:否 |
avatar_large |
string |
使用者頭像地址(大圖),180×180畫素 |
avatar_hd |
string |
使用者頭像地址(高清),高清頭像原圖 |
verified_reason |
string |
認證原因 |
follow_me |
boolean |
該使用者是否關注當前登入使用者,true:是,false:否 |
online_status |
int |
使用者的線上狀態,0:不線上、1:線上 |
bi_followers_count |
int |
使用者的互粉數 |
lang |
string |
使用者當前的語言版本,zh-cn:簡體中文,zh-tw:繁體中文,en:英語 |
如圖,此時就可以獲取想要的使用者資訊(使用者暱稱、頭像等),可讓使用者直接登入訪問網站了
其實像微信登陸、QQ登陸的原理都一樣,都是:
1、獲取使用者授權,取得code
2、將code傳送到授權伺服器獲取Access Token
3、通過Access Token調取API介面獲取使用者資訊
基於開發過程中的隨筆記錄,有啥錯誤的請指正啊 呵呵呵