V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Waterchestnut
V2EX  ›  程序员

微信授权神奇操作请教~

  •  
  •   Waterchestnut · 2020-07-02 17:29:00 +08:00 · 4162 次点击
    这是一个创建于 1606 天前的主题,其中的信息可能已经有所发展或是发生改变。

    偶然看一个公众号,点过去不需要授权也能拿到头像和昵称,并且生成了账号 ID,下次点进来还是这个账号 ID,说名该网页已经拿到了 open id 。不然无法识别是同一个用户。

    想跟大佬们请教下,这里不需要授权就能拿到信息是怎么操作的?

    链接我贴一下,大家瞻仰下

    http://www.huoxingplan.com/User/index/sid/8009103.html

    41 条回复    2020-07-03 17:56:23 +08:00
    kop1989
        1
    kop1989  
       2020-07-02 17:29:43 +08:00
    公众号拿头像不需要授权的啊
    kop1989
        2
    kop1989  
       2020-07-02 17:31:54 +08:00
    openID 的话别说授权,不关注都可以拿到。
    guolaopi
        3
    guolaopi  
       2020-07-02 17:33:42 +08:00
    你这个链接里也没有啥头像啊,不知道的以为你推广呢
    guolaopi
        4
    guolaopi  
       2020-07-02 17:35:20 +08:00
    @kop1989 求教用户不授权怎么拿得到微信 openId 。。。
    helone
        5
    helone  
       2020-07-02 17:35:46 +08:00
    公众号我没记错的话能静默授权,只需要中间跳转一下再跳回来就能拿到用户简单的信息,不需要确认啥的
    helone
        6
    helone  
       2020-07-02 17:36:52 +08:00
    pytth
        7
    pytth  
       2020-07-02 17:37:37 +08:00
    我打开是有要求授权的,如果取消授权,注册账号是没有头像的,我注册了之后没显示头像。单纯的获取 openid 是不需要授权就能获得 openid 的,如果要获得头像和昵称必须要授权。
    cqtop
        8
    cqtop  
       2020-07-02 17:37:57 +08:00
    静默授权 了解下
    swuzjb
        9
    swuzjb  
       2020-07-02 17:39:45 +08:00
    kop1989
        10
    kop1989  
       2020-07-02 17:40:13 +08:00
    guolaopi
        11
    guolaopi  
       2020-07-02 17:50:59 +08:00 via Android
    @helone
    @kop1989

    抱歉,刚看文档 snsapi_base 静默授权我看到了,
    但是#2 不关注公众号的话也会生成 openId 吗?我蒙了.

    https://developers.weixin.qq.com/doc/offiaccount/User_Management/Get_users_basic_information_UnionID.html#UinonId
    这里第一行说:“在关注者与公众号产生消息交互后,公众号可获得关注者的 OpenID 。”
    guolaopi
        12
    guolaopi  
       2020-07-02 17:52:12 +08:00 via Android
    @pytth
    感觉是骗注册(滑稽
    kop1989
        13
    kop1989  
       2020-07-02 17:53:13 +08:00
    @guolaopi #11 你可以理解为这个交互也包含用本公众号 appid 申请 code 的网页
    guolaopi
        14
    guolaopi  
       2020-07-02 17:54:59 +08:00
    @kop1989 #13
    但是前提不是首先得是“关注者”,之后才消息交互吗。。
    kop1989
        15
    kop1989  
       2020-07-02 17:56:20 +08:00
    @guolaopi #14 😂这个可能就是微信自己产品设计和程序不匹配的问题了。微信的文档坑很多。
    guolaopi
        16
    guolaopi  
       2020-07-02 17:59:42 +08:00
    @kop1989
    我一直理解 OpenId 的逻辑是用户 X 关注了公众号 A 的时候微信服务器生成一个 OpenId 。。。

    照你说的逻辑难道微信是提前(或者每有人创建一个公众号的时候)就为 X 生成了关于 A 的 OpenId 在那放着,
    不管 X 有没有关注 A,openId 都存在?

    那微信服务器压力是不是有点大。。。。
    haiyan
        17
    haiyan  
       2020-07-02 18:00:19 +08:00
    静默授权只能拿到 OPENID,其他的信息都拿不到的
    Waterchestnut
        18
    Waterchestnut  
    OP
       2020-07-02 18:01:02 +08:00
    @kop1989 open id 不授权怎么拿到?求解
    Waterchestnut
        19
    Waterchestnut  
    OP
       2020-07-02 18:01:19 +08:00
    @guolaopi 不是推广。。。
    guolaopi
        20
    guolaopi  
       2020-07-02 18:03:24 +08:00 via Android
    @haiyan
    拿到 openId 后
    GET 调用: https://api.weixin.qq.com/cgi-bin/user/info?access_token=Token&openid=openid&lang=zh_CN 这个接口,
    可以获取到用户信息,刚用 PostMan 测的。😀
    guolaopi
        21
    guolaopi  
       2020-07-02 18:04:28 +08:00 via Android
    @Waterchestnut
    微信文档,静默授权,可以的。
    用户感觉是调到一个网址再跳回来,基本上无感。
    annielong
        22
    annielong  
       2020-07-02 18:09:48 +08:00
    静默授权,一直用这个,可以获取基本信息,不管是否关注公众号,openid 感觉像是个人原始微信号和公众号 id 结合生成的,
    kamal
        23
    kamal  
       2020-07-02 18:31:03 +08:00
    如果你授权过同一个微信开放平台的其他公众号,就会生成 unionId,同时记录下你的个人信息;
    当前公众号(也绑定在同一个开放平台)只需要静默授权就能获得 openId,用 openid 可以查询到 unionId,再查询到你的个人信息,展示出来。
    Waterchestnut
        25
    Waterchestnut  
    OP
       2020-07-02 18:39:16 +08:00
    @helone 我记得 2019 上半年的时候微信停用了静默授权
    Waterchestnut
        26
    Waterchestnut  
    OP
       2020-07-02 18:39:31 +08:00
    @helone 我看下
    Waterchestnut
        27
    Waterchestnut  
    OP
       2020-07-02 18:39:45 +08:00
    @pytth 是的,我是这么理解的
    Waterchestnut
        28
    Waterchestnut  
    OP
       2020-07-02 18:39:59 +08:00
    @swuzjb 感谢,我看下
    Waterchestnut
        29
    Waterchestnut  
    OP
       2020-07-02 18:41:06 +08:00
    @guolaopi 我是关注后点开的,没有关注的 case 没有试过,但是我取消关注,再次点卡又是依然能拿到头像昵称
    Waterchestnut
        30
    Waterchestnut  
    OP
       2020-07-02 18:41:28 +08:00
    @haiyan union id 能拿到吗?
    Waterchestnut
        31
    Waterchestnut  
    OP
       2020-07-02 18:43:27 +08:00
    @guolaopi 这个是要 acess Token 的,这个前端拿不到的,这个 access Token 微信官方不建议给到前端,会有风险的
    swuzjb
        32
    swuzjb  
       2020-07-02 22:37:13 +08:00
    @Waterchestnut 取消关注后 OpenId 也不会消失 openId 是 公众号 和 微信用户的 唯一凭证 应该是有个生成规则的,肯定不是自增的 感觉是个可逆的
    hhyyd
        33
    hhyyd  
       2020-07-02 23:14:30 +08:00
    简单信息不需要授权就可以获取到基本的头像昵称等信息。但是获取 openid 的话,是需要授权的吧。
    d5
        34
    d5  
       2020-07-03 08:15:31 +08:00 via iPhone
    scope=snsapi_base 无论用户关注与否,都可以获得这个用户在你的公众号的唯一 openid 的。下面是个我个人的演示,这是一个图像处理小工具,就是用的服务号 snsapi_base 获取用户 openid 。

    https://photo.opencool.cn
    sayitagain
        35
    sayitagain  
       2020-07-03 09:59:13 +08:00
    sayitagain
        36
    sayitagain  
       2020-07-03 10:01:55 +08:00
    @guolaopi 获取 access_token 这一步就已经可以拿到 openID 了.openID 这个东西无需生成,本来就有一套用户与公众号之间的唯一算法.
    sayitagain
        37
    sayitagain  
       2020-07-03 10:03:02 +08:00
    @hhyyd 不需要,code 换取 access_token 的时候就可以拿到
    guolaopi
        38
    guolaopi  
       2020-07-03 10:47:47 +08:00
    @sayitagain
    好的,学到了~
    zhuweiyou
        39
    zhuweiyou  
       2020-07-03 14:02:07 +08:00
    1 、拿 openid 可以静默授权,不需要用户同意。
    2 、如果你关注了这个公众号,openid 和昵称头像这些,不需要同意,都可以拿到,有 API 的。
    cbasil
        40
    cbasil  
       2020-07-03 14:59:30 +08:00
    1,通过 https://open.weixin.qq.com/connect/oauth2/authorize 跳转拿到 openid,
    2, 通过接口拿到用户昵称,头像,这样就 OK 了。
    3,如果想获取用户手机号啥的,就需要用户同意才行
    yc8332
        41
    yc8332  
       2020-07-03 17:56:23 +08:00
    静默授权可以拿到 openid,要头像昵称就需要弹窗去授权了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1387 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 17:15 · PVG 01:15 · LAX 09:15 · JFK 12:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.