微信內置瀏覽器調用微信 OAuth 受權獲取用戶基本信息

首先,我建議各位打印一份微信官方的「網頁受權獲取用戶基本信息」文檔,可是不要閱讀它。燒掉它,這有重要的象徵意義。php

wechat

一個位於微信內置瀏覽器內的網頁要獲取用戶基本信息,首先要獲取任意一個用戶對其應用的所謂「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前邊,scoperesponse_type必定要在其後邊。反正你按我這裏給出的格式填就對了。api

很奇怪爲何不能使用標準 URL 參數處理函數麼?那我還告訴你,給微信接口傳 JSON 時,標準 JSON Unicode 轉義\uXXXX是無效的。瀏覽器


via lilydjwg.is-programmer.com微信

相關文章
相關標籤/搜索