3
31
2014
6

微信内置浏览器调用微信 OAuth 授权获取用户基本信息的方法

本文来自依云'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前边,scoperesponse_type一定要在其后边。反正你按我这里给出的格式填就对了。

很奇怪为什么不能使用标准 URL 参数处理函数么?那我还告诉你,给微信接口传 JSON 时,标准 JSON Unicode 转义\uXXXX是无效的。

Category: 网络 | Tags: 腾讯 微信 | Read Count: 30360
Star Brilliant 说:
Mar 31, 2014 07:41:45 PM

首先,我建议各位打印一份微信官方的「网页授权获取用户基本信息」文档,但是不要阅读它。烧掉它,这有重要的象征意义。

Star Brilliant 说:
Mar 31, 2014 10:59:58 PM

首先,我建议各位打印一份微信官方的「网页授权获取用户基本信息」文档,但是不要阅读它。烧掉它,这有重要的象征意义。

Star Brilliant 说:
Apr 01, 2014 12:07:01 AM

楼下那个冒牌货是谁?

Star Brilliant 说:
Apr 01, 2014 12:08:40 AM

打错字了……我是想问2楼那个冒牌货是谁……
为什么用和我一样的ID,却不一样的头像。

mapleray 说:
Apr 01, 2014 11:47:05 AM

因为邮箱不一样= =
现在这个想表达什么?没看懂呢= =(⊙o⊙)?

zergskj 说:
Dec 29, 2014 09:20:30 PM

支持博主!

腾讯的微信帮助文档真的可以烧掉!
写的什么乱七八糟的
明明很简单的一个事情,非要写成那样
故意制造一些概念让人看不懂呐!


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter

部分静态文件存储由又拍云存储提供。 | Theme: Aeros 2.0 by TheBuckmaker.com