收藏
回答

第三方平台授权bug:同一微信不同小程序授权,回调URI的auth_code不变









https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1453779503&token=&lang=zh_CN

根据教程,小程序授权给第三方平台有以下这些步骤:

步骤1:第三方平台方获取预授权码(pre_auth_code)

步骤2:引入用户进入授权页

步骤3:用户确认并同意登录授权给第三方平台方

步骤4:授权后回调URI,得到授权码(authorization_code)和过期时间

步骤5:利用授权码调用公众号或小程序的相关API


步骤3:用户确认并同意登录授权给第三方平台方,同一个微信下关联了几个不同的小程序,选择不同的小程序去授权,

在步骤4中,微信扫码授权操作时是两个不同的小程序,第三方平台的回调URI的auth_code参数都是相同。

最后一次编辑于  2018-04-24
回答关注问题邀请回答
收藏

19 个回答

  • 2018-04-24

    第三方平台的appid: wx553ca628898508e0


    麻烦了。谢谢


    2018-04-24
    有用
    回复
  • 2018-04-24

    再强调一遍,第三方平台的回调URI的auth_code跟自身的调用逻辑没有任何关系auth_code生成逻辑都是在第三方平台里面

    2018-04-24
    有用
    回复
  • 2018-04-24

    能不能帮忙把这个问题反馈给第三方平台的开发或者测试?

    他们按照我说的步骤,同一个微信号关联几个小程序,测试一下不同小程序授权操作,就知道是不是有问题了

    2018-04-24
    有用
    回复
  • 2018-04-24

    第三方平台的回调URI的auth_code跟自身的调用逻辑没有任何关系。

    步骤如下:

    我后台通过component_app_id生成授权二维码 -> 微信扫码二维码 -> 微信界面出现该微信关联的所有小程序 -> 选择不同的小程序授权 -> 第三方后台回调URI返回auth_code


    其中第一步生成授权二维码是我后台的逻辑,这个跟小程序appid没有任何关系,不会影响第三方后台回调URI返回auth_code。

    其他的步骤都是微信以及第三方平台的业务逻辑。微信以及第三方平台的逻辑控制了回调URI返回auth_code。


    这个问题之所以比较少出现,是因为一般情况下,一个微信号只关联一个小程序。

    我因为是在测试不同小程序授权的场景,所以同一个微信号注册了多个小程序,在实际操作中才发现不同的小程序授权,回调URI返回auth_code都相同的错误。


    2018-04-24
    有用
    回复
  • 2018-04-23

    @林超 , 问题进展如何?没有回复吗?

    2018-04-23
    有用
    回复
  • 2018-04-23

    刚刚又试了下,微信扫码授权操作时是两个不同的小程序,第三方平台的回调URI的auth_code参数都是相同。


    回调URI:https://lantingjie.cn/wechat/auth/jump?shopId=5wtQr0lwDuPq8i2pYVN&parentShopId=shp_rZTmLWdQCvPU3xt1kPL&userId=3&shopName=%E6%B5%B7%E7%8F%A0%E5%BA%97&auth_code=queryauthcode@@@emUDgagWI3FjZ4BAaYKQI-G0_FOkYOSs0zEhTw5GM1aH5pw21BFKCZ5i_UxdU_5-D5Nbw2MRxC3D75iSgPBb5Q&expires_in=3600


     2018-04-23 16:28:55.936  INFO 12005 --- [  XNIO-2 task-4] c.z.w.b.controller.open.AuthController   : [jump] 

     authorizationCode:queryauthcode@@@emUDgagWI3FjZ4BAaYKQI-G0_FOkYOSs0zEhTw5GM1aH5pw21BFKCZ5i_UxdU_5-D5Nbw2MRxC3D75iSgPBb5Q, 




    回调URI:https://lantingjie.cn/wechat/auth/jump?shopId=5wtQr0lwDuPq8i2pYVN&parentShopId=shp_rZTmLWdQCvPU3xt1kPL&userId=3&shopName=%E6%B5%B7%E7%8F%A0%E5%BA%97&auth_code=queryauthcode@@@emUDgagWI3FjZ4BAaYKQI-G0_FOkYOSs0zEhTw5GM1aH5pw21BFKCZ5i_UxdU_5-D5Nbw2MRxC3D75iSgPBb5Q&expires_in=3600


    2018-04-23 16:31:14.286  INFO 12005 --- [  XNIO-2 task-6] c.z.w.b.controller.open.AuthController   : [jump] 

     authorizationCode:queryauthcode@@@emUDgagWI3FjZ4BAaYKQI-G0_FOkYOSs0zEhTw5GM1aH5pw21BFKCZ5i_UxdU_5-D5Nbw2MRxC3D75iSgPBb5Q, 


    2018-04-23
    有用
    回复
  • 2018-04-23

    根据文档,https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1453779503&token=&lang=zh_CN

    授权码是步骤4回调URI返回的:

    步骤4:授权后回调URI,得到授权码(authorization_code)和过期时间

    授权流程完成后,授权页会自动跳转进入回调URI,并在URL参数中返回授权码和过期时间(redirect_url?auth_code=xxx&expires_in=600)


    2018-04-23
    有用
    回复
  • 2018-04-23

    授权码是通过微信扫码,选择授权的小程序后,第三方平台回调时候返回的, 跟我的后台逻辑没有关系。


    我三次操作微信扫码授权,三次选择了不同的小程序,第三方平台回调时返回的授权码都是一样的。也就是说第三方平台根本没有根据我选择不同的小程序,返回不同的授权码。下面是不同时间操作授权时候返回的授权码,都是同样的授权码。



    2018-04-23 15:50:28.552 DEBUG 11914 --- [  XNIO-2 task-7] c.z.w.b.a.s.WechatAuthorizerService      : authorizationCode: queryauthcode@@@u-uT_wlMPjx5wUeymuc4TGQaezzyBT2_bTOGKqAa2Ihj5jnIfHeCWr1tQiOOUFy5_DExuk1p0JolIKnR4Sp5sQ


    2018-04-23 15:51:36.392 DEBUG 11914 --- [  XNIO-2 task-8] c.z.w.b.a.s.WechatAuthorizerService      : authorizationCode: queryauthcode@@@u-uT_wlMPjx5wUeymuc4TGQaezzyBT2_bTOGKqAa2Ihj5jnIfHeCWr1tQiOOUFy5_DExuk1p0JolIKnR4Sp5sQ


    2018-04-23 16:00:19.620 DEBUG 11914 --- [  XNIO-2 task-9] c.z.w.b.a.s.WechatAuthorizerService      : authorizationCode: queryauthcode@@@u-uT_wlMPjx5wUeymuc4TGQaezzyBT2_bTOGKqAa2Ihj5jnIfHeCWr1tQiOOUFy5_DExuk1p0JolIKnR4Sp5sQ


    2018-04-23
    有用
    回复
  • 2018-04-23

    同一个微信下的不同的小程序(比如说是A,B,C三个小程序)授权给开放平台,授权后回调URI,得到授权码,利用授权码拿到的appid都是第一个授权时选择的小程序A的appid。即使授权是选择的是小程序B或者小程序C,返回来的appid都是小程序A的appid

    2018-04-23
    有用
    回复

正在加载...

登录 后发表内容