1. 程式人生 > >pc端和移動端整合第三方快捷登入 --- 微博為例

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

 並且在loginWbUri後面增加兩個引數 '&response_type=code&display=mobile'

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介面獲取使用者資訊

基於開發過程中的隨筆記錄,有啥錯誤的請指正啊   呵呵呵