微信 PC 端扫码登录,只能选 snsapi_login 的 scope,而这个权限只能获得扫码用户的 openid,是不能获得用户的头像昵称之类公开信息的,然后扫码登录根本不能选其他 scope。也就是说,PC 上扫码用微信账号登录,事实上是根本没有途径去获取用户的昵称和头像的。
然而微信的开放平台网站应用文档会列出来好几个可以获取用户昵称和头像的接口,虽然开放平台网站应用根本就不能去调用这些接口。
玛德各种文档反复看,各种 google,终于崩溃了,气吐了,吐你丫微信一脸
谁能想到一个 oauth 连头像和昵称都不给。
1
qiayue 2017-12-12 03:58:59 +08:00
第一步,用户扫码,你得到 code
第二步,你拿 code 换取 access_token,同时也能得到 openid 和 scope 第三步,通过 access_token 和 openid 获取用户详细信息 其中第三步,文档已经说得很清楚了: 1. access_token 有效且未超时; 2. 微信用户已授权给第三方应用帐号相应接口作用域( scope )。 |
2
insub OP |
3
insub OP @qiayue 我说的再明白一点,如果我没理解错的话,网站应用文档里面写的接口作用域,在网站应用里根本就是无法向用户请求授权的
|
4
rogwan 2017-12-12 07:45:53 +08:00 via Android 1
微信 DNA 是拒绝 PC 生态的,是不想给。
|
5
lestat 2017-12-12 07:52:11 +08:00 via Android
微信本来就恶心
|
7
mydns 2017-12-12 09:07:34 +08:00
我用公众平台做的扫码登录 获取用户头像等信息正常
开放平台还得单独再认证一遍麻烦 |
8
lelouchyang 2017-12-12 09:13:01 +08:00
楼主刚入行?
|
9
lxrmido 2017-12-12 09:20:11 +08:00
……一楼所说的第二、三步是可用的并且我已经在许多个应用上用了好久,你是卡在哪一步了,网站应用的域名跟你申请网站应用时填写的域名不同?还是说你是在前端去获取?
|
10
hanzhao 2017-12-12 09:30:09 +08:00
楼主,snsapi_login 是可以获取到用户信息的,再试试吧。
|
11
justfindu 2017-12-12 09:39:31 +08:00
我觉得你是没有权限获取哪些信息吧, 因为不是服务号?
|
12
insub OP @mydns 是 PC 上的扫码登录么?是的话大概怎么个流程呢?
@lelouchyang 不是刚入行 @lxrmido 不是的,access_token 我是可以拿到的,一切正常,但是这个 access_token 是在 snsapi_login 的 scope 下的,@hanzhao 从文档来看,snsapi_login 的 scope 是拿不到用户的头像或昵称信息的,文档里写的返回也是没有的 @justfindu 是服务号权限,开放平台开发者认证正常,也绑定了相关公众号(服务号) 我怀疑之前这个 snsapi_login 是可以获取用户公开信息的,但是微信后来改了,也没说明,因为之前许多应用的截图,在微信内授权那个界面是有“获取用户昵称等公开信息”的勾选项的,现在变成只有“是否登录该网站”的勾选项了 |
13
mokeyjay 2017-12-12 10:09:14 +08:00
PHP 的话,大可无脑上 https://www.easywechat.com/
|
14
mydns 2017-12-12 10:17:38 +08:00 1
@insub 是 PC 上的扫码登录 口才不好 过程描述大致如下
1.生成一个带参数的二维码 同时记录二维码参数到数据库 2.用户扫码之后 微信发起对话 服务器接收对话并对比参数 更新数据库 3.生成参数的页面每 1-3 秒查一次数据库中的二维码参数表某个字段是否更新,更新了 就开始登录 获取头像 用户名等信息 |
15
insub OP 我打听一下,有没有哪位的应用,是在 PC 端能够获取到用户的头像和昵称的?
目前看一号店,沪江是可以在 PC 端扫码登录后能够获取到微信用户的头像和昵称的,要么是他们大店权限不一样,要么就是他们申请得早,早期的开放平台登录接口有这个权限 查了一大圈,没法确认 |
16
insub OP @mydns 明白了,谢谢。我昨天想的也是这个办法,不过我准备就不用扫码登录接口了,直接把公众平台的网页授权接口转成二维码+自定义参数在 PC 端显示让用户扫,这样还能少发几次请求
|
18
pubby 2017-12-12 11:09:26 +08:00
能拿到啊
就第一步拿 code 的过程有些不同, 1. 微信内浏览器的情况(服务号 APPID ) https://open.weixin.qq.com/connect/oauth2/authorize?appid=<APPID>&redirect_uri=<RETURN_URL>&response_type=code&scope=snsapi_userinfo&state=myapp_wx#wechat_redirect 2. pc 浏览器的情况(开放平台上 web 应用的 APPID, 并且绑定服务号) https://open.weixin.qq.com/connect/qrconnect?appid=<APPID>&redirect_uri=<RETURN_URL>&response_type=code&scope=snsapi_login&state=myapp_web#wechat_redirect 剩下的过程相同: https://api.weixin.qq.com/sns/oauth2/access_token?appid=<APPID>&secret=<SECRET>&code=<CODE>&grant_type=authorization_code 拿到 access_token https://api.weixin.qq.com/sns/userinfo?access_token=<ACCESS_TOKEN>&openid=<OPENID> 得到 userinfo 数据 |
19
insub OP |
20
pubby 2017-12-12 11:16:47 +08:00
我们有三个服务号一直都是用这样的方案,没问题。
至于你怀疑最近微信是不是改权限了,这个不知道,最新的一个服务号是去年 4 月开通的。 |