1. 程式人生 > >微信開發之網頁授權

微信開發之網頁授權

個人信息 ati 關註 技術分享 lin base 定義 技術 參數

第一步:成為開發者

  在自己的公眾號點擊基本配置,點擊基本配置,填寫服務器配置

技術分享圖片

技術分享圖片

Url服務器地址是微信回調地址,必須以 http://或https://開頭,端口號必須為80或443。
Token令牌由用戶自己定義,數字或字母,長度為3~32字符。
EncodingAESKey隨機生成即可。
加密方式可以選明文模式和安全模式

點擊提交,微信會發送請求到你填寫的url地址驗證服務器是否與所填寫的資料匹配,配置成功則可以開始開發了

第二步:微信網頁授權

微信授權分為靜默授權和非靜默授權

靜默授權:用戶感受不到他們操作了授權,公眾號開發者獲取的資料較少,

非靜默授權:用戶需要點擊授權,開發者獲得用戶較多的信息,比如所在省市,昵稱頭像等

前提配置:

1.獲取公眾號appIDappsecret

2.開發 - 接口權限 - 網頁服務 - 網頁帳號 - 網頁授權獲取用戶基本信息”的配置選項中,修改授權回調域名,:www.qq.com,不用加http等協議

技術分享圖片

技術分享圖片

授權步驟:

1.用戶關註微信公眾賬號。

2.微信公眾賬號提供用戶請求授權頁面URL。公眾號提供一個鏈接或二維碼或點擊的自定義菜單,若用戶點擊,開發者服務器向微信服務器接口發送請求獲取code,

獲取code的微信服務器接口:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

:https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx4a22b50d7e897f97&redirect_uri=http%3a%2f%2fad.seewo.com%2foauth.php&response_type=code&scope=snsapi_userinfo&state=123#wechat_redirect

*Appid: 公眾號的唯一標識(這個就是我們前面申請的)

*redirect_uri: 授權後回調的url(這裏需要具體,在我們前面設置的回調域名後加具體的文件或方法地址)

*response_type: 返回類型,請填寫

code

*Scope: 應用授權作用域,snsapi_base (靜默授權,不彈出授權頁面,直接跳轉,只能獲取用戶openid),snsapi_userinfo (彈出授權頁面,可通過openid拿到昵稱、性別、所在地。並且,即使在未關註的情況下,只要用戶授權,也能獲取其信息)

State: 重定向後會帶上state參數,開發者可以填寫a-zA-Z0-9的參數值,最多128字節,該值會被微信原樣返回,我們可以將其進行比對,防止別人的攻擊。

#wechat_redirect:直接在微信打開鏈接可不填此參數。做頁面302重定向時候,必須帶此參數

3.用戶點擊授權頁面URL,將向服務器發起請求

4.服務器詢問用戶是否同意授權給微信公眾賬號(snsapi_base時無此步驟)

技術分享圖片

5.用戶同意(snsapi_base時無此步驟)

6.服務器將CODE通過回調傳給微信公眾賬號,同時給回調域名根目錄下所有php文件

7.微信公眾賬號獲得CODE,域名下php文件獲取code

8.微信公眾賬號通過CODE向服務器請求Access Token,域名下PHP文件請求access token

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

:https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx41cb8dbd827a16e9&secret=d4624c36b6795d1d99dcf0547af5443d&code=00137323023ab55775be09d6d8e75ffA&grant_type=authorization_code

*Appid 公眾號的唯一標識

*Secret 公眾號的appsecret

*Code 填寫第一步獲取的code參數

*grant_type 填寫為authorization_code

9.服務器返回Access TokenOpenID給微信公眾賬號和回調域名

正確返回如下:

{

"access_token":"ACCESS_TOKEN",

"expires_in":7200,

"refresh_token":"REFRESH_TOKEN",

"openid":"OPENID",

"scope":"SCOPE"

}

access_token 網頁授權接口調用憑證,註意:此access_token與基礎支持的access_token不同

expires_in access_token 接口調用憑證超時時間,單位(秒)

refresh_token 用戶刷新access_token

Openid 用戶唯一標識

Scope 用戶授權的作用域,使用逗號(,)分隔

10.微信公眾賬號通過Access Token向服務器請求用戶信息(snsapi_base時無此步驟)

https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID

11.服務器將用戶信息回送給微信公眾賬號(snsapi_base時無此步驟)

{

"openid":" OPENID",

" nickname": NICKNAME,

"sex":"1",

"province":"PROVINCE"

"city":"CITY",

"country":"COUNTRY",

"headimgurl": "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/46",

"privilege":[

"PRIVILEGE1"

"PRIVILEGE2"

],

"unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"

}

Openid 用戶的唯一標識

Nickname 用戶昵稱

Sex 用戶的性別,值為1時是男性,值為2時是女性,值為0時是未知

Province 用戶個人資料填寫的省份

City 普通用戶個人資料填寫的城市

Country 國家,如中國為CN

Headimgurl 用戶頭像,最後一個數值代表正方形頭像大小(有0466496132數值可選,0代表640*640正方形頭像),用戶沒有頭像時該項為空。若用戶更換頭像,原有頭像URL將失效。

Privilege 用戶特權信息,json 數組,如微信沃卡用戶為(chinaunicom

Unionid 只有在用戶將公眾號綁定到微信開放平臺帳號後,才會出現該字段。詳見:獲取用戶個人信息

微信開發之網頁授權