首先,我建议各位打印一份微信官方的「网页受权获取用户基本信息」文档,可是不要阅读它。烧掉它,这有重要的象征意义。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
是无效的。浏览器