微信公众号小程序第三方获取授权流程

概述

这是一个类似平时的C-S模型,但在这模型中有一个问题,服务器能够获取到客户端的客户唯一标识,在微信中应该就是微信号。应该是出于保护用户隐私的目的,微信选择了使用openid来代替微信号作为唯一标识,同时,openid对于不同的公众号也是不同的,就是说,openid具有以下特征:

  • 同一个公众号的不同用户openid不同(废话)
  • 同一个用户对不同公众号openid不同

那么问题来了,公众号小程序是怎么知道当前访问的用户是哪个用户呢?

除此之外,可能是为了防止伪造身份,微信公众号/小程序除了appid外还有一个secret,官方文档中称该参数安全性极高,不能放置于客户端,那么就意味着请求必须从服务端发送

这时就需要微信服务器作为中间件来做授权。


以下简称:用户->客户端 (Client),公众号小程序->服务端 (Sever),微信=微信服务器 (WeChat)

Client Server WeChat 请求资源 返回一个授权地址 该地址即第一次需要使用的地址 使用该地址 验证用户身份 使用地址中的回调地址并附上 &code=xx 携带 code 和 appid 和 secret 此处第二次请求 验证 App 身份和 code 返回 openid 根据 openid 返回资源 Client Server WeChat

获取 code

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

参数是否必须说明
appid公众号的唯一标识
redirect_uri授权后重定向的回调链接地址, 请使用 urlEncode 对链接进行处理
response_type返回类型,请填写code
scope应用授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且, 即使在未关注的情况下,只要用户授权,也能获取其信息 )
state重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值,最多128字节
#wechat_redirect无论直接打开还是做页面302重定向时候,必须带此参数

获取 openId

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

参数是否必须说明
appid公众号的唯一标识
secret公众号的appsecret
code填写第一步获取的code参数
grant_type填写为authorization_code
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值