本文来自依云's Blog,转载请注明。
首先,我建议各位打印一份微信官方的「网页授权获取用户基本信息」文档,但是不要阅读它。烧掉它,这有重要的象征意义。
一个位于微信内置浏览器内的网页要获取用户基本信息,首先要获取任意一个用户对其应用的所谓「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
是无效的。
Mar 31, 2014 07:41:45 PM
首先,我建议各位打印一份微信官方的「网页授权获取用户基本信息」文档,但是不要阅读它。烧掉它,这有重要的象征意义。
Mar 31, 2014 10:59:58 PM
首先,我建议各位打印一份微信官方的「网页授权获取用户基本信息」文档,但是不要阅读它。烧掉它,这有重要的象征意义。
Apr 01, 2014 12:07:01 AM
楼下那个冒牌货是谁?
Apr 01, 2014 12:08:40 AM
打错字了……我是想问2楼那个冒牌货是谁……
为什么用和我一样的ID,却不一样的头像。
Apr 01, 2014 11:47:05 AM
因为邮箱不一样= =
现在这个想表达什么?没看懂呢= =(⊙o⊙)?
Dec 29, 2014 09:20:30 PM
支持博主!
腾讯的微信帮助文档真的可以烧掉!
写的什么乱七八糟的
明明很简单的一个事情,非要写成那样
故意制造一些概念让人看不懂呐!