天天看點

微信内置浏覽器調用微信 OAuth 授權擷取使用者基本資訊

首先,我建議各位列印一份微信官方的「

網頁授權擷取使用者基本資訊

」文檔,但是不要閱讀它。燒掉它,這有重要的象征意義。

微信内置浏覽器調用微信 OAuth 授權擷取使用者基本資訊

一個位于微信内置浏覽器内的網頁要擷取使用者基本資訊,首先要擷取任意一個使用者對其應用的所謂「openid」(其實應該叫「private id」,因為同一個使用者在每個應用裡的這個 ID 都不一樣)。這個可以通過隻能擷取到「openid」的

snsapi_base

授權得到。然後,将使用者重定向于以下位址:

url_fmt = '''

https://open.weixin.qq.com/connect/oauth2/authorize?

appid={appid}

&redirect_uri={redirect_uri}?userid={userid}

&response_type={response_type}&scope={scope}&state={state}

'''.replace('\n', '')

scope

當然是

snsapi_userinfo

,其它參數自己填。

redirect_uri

最好通過

urllib.parse.quote

編碼一下,雖然好像不編碼也可以用。利用

url_fmt.format_map

或者

url_fmt.format

方法把參數填進去,重定向之後,微信就會彈出授權提示頁面了。

記住,一定要用我這裡給出的格式,不要按标準 URL 參數處理方法使用

urllib.parse.urlencode

方法構造參數部分,因為這個微信授權 URL 裡的參數順序是重要的。具體規則不清楚,大概是

appid

一定要在

redirect_uri

前邊,

scope

response_type

一定要在其後邊。反正你按我這裡給出的格式填就對了。

很奇怪為什麼不能使用标準 URL 參數處理函數麼?那我還告訴你,給微信接口傳 JSON 時,标準 JSON Unicode 轉義

\uXXXX

是無效的。