首先,我建議各位打印一份微信官方的「網頁受權獲取用戶基本信息」文檔,可是不要閱讀它。燒掉它,這有重要的象徵意義。php
一個位於微信內置瀏覽器內的網頁要獲取用戶基本信息,首先要獲取任意一個用戶對其應用的所謂「openid」(其實應該叫「private id」,由於同一個用戶在每一個應用裏的這個 ID 都不同)。這個能夠經過只能獲取到「openid」的snsapi_base
受權獲得。而後,將用戶重定向於如下地址:html
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
方法把參數填進去,重定向以後,微信就會彈出受權提示頁面了。segmentfault
記住,必定要用我這裏給出的格式,不要按標準 URL 參數處理方法使用urllib.parse.urlencode
方法構造參數部分,由於這個微信受權 URL 裏的參數順序是重要的。具體規則不清楚,大概是appid
必定要在redirect_uri
前邊,scope
和response_type
必定要在其後邊。反正你按我這裏給出的格式填就對了。api
很奇怪爲何不能使用標準 URL 參數處理函數麼?那我還告訴你,給微信接口傳 JSON 時,標準 JSON Unicode 轉義\uXXXX
是無效的。瀏覽器