微信授权登陆

      微信登录分为两类:需要用户确认的授权登录与静默授权,用户确认的授权登录因为要通过用户的个人确认,所以可以获取用户全面的信息,无论是否关注相关微信号都可以获取,静默授权是嵌套在普通网页中的授权方式,不需要用户确认,但只能获取微信用户的唯一标识openid,但有时候这种交互方式更加的友好,对于用户的简单认证还是很有用的。官方说明如下:

关于网页授权的两种scope的区别说明

1、以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)

2、以snsapi_userinfo为scope发起的网页授权,是用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。

3、用户管理类接口中的“获取用户基本信息接口”,是在用户和公众号产生消息交互或关注后事件推送后,才能根据用户OpenID来获取用户基本信息。这个接口,包括其他微信接口,都是需要该用户(即openid)关注了公众号后,才能调用成功的。

     有了权限以后,点击修改,里面有一个网页授权域名选项,填写你的域名,不需要带http等协议头,请认真填写,例如:www.baidu.com,因为你的授权页面是要挂在这个域名下的,如果大家测试的话,可以使用花生壳内网映射来发布网页,有固定域名提供的。

网页授权的具体官方api链接地址如下:

https://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html

点击打开链接


授权登陆大致步骤如下:

1.调用微信api获取用户授权code,即用户点击确认登录后返回给页面的一个值

用户同意授权,获取code;
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect 若提示“该链接无法访问”,请检查参数是否填写错误,是否拥有scope参数对应的授权作用域权限。
其中Redirect_uri的值为用户同意授权后的回调页面,且该页面要在授权回调域名下,并且该网页的地址要经过url编码后才能访问,scope参数为授权模式,这里填写snsapi_userinfo,即用户授权。


2.调用微信api根据返回的code换取网页授权凭证accesstoken

获取code后,请求以下链接获取access_token:  https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
其中的appid与secert是微信服务号或订阅号的基本信息中内容,返回值是一个json符串,我们只要获取其中的用户唯一标识openid与授权凭证accesstoken就够了。

3.调用微信api根据用户授权凭证获取用户的账号信息

http:GET(请使用https协议) https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
返回的信息也是json字符串,包含用户昵称,城市,国家等信息,当然也一定会包含用户唯一标识openid


静默授权:

静默授权与用户登录授权有几点不同

1.第一步获取code的时候scope的值为snsapi_base

2.第二步获取到openid之后授权过程至此结束

在这里提供给大家静默授权的一个作用,就是可以根据用户的唯一标识openid来判断用户是否关注了本微信公众号,在获取了openid之后再进行两步操作即可

3.调用微信api获取微信的通用凭证accesstoken

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
需要注意的是,这个凭证和用户授权的凭证不一样!!!一定要记住!!

4.调用微信api获取用户基本信息

https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

这里的accesstoken一定要用第三步获取的,千万不要用和openid一起获取的accesstoken,那个凭证仅仅适用于用户授权登录,在返回信息中一定回包含一个字段subscribe,如果用户关注了,值为1,并可以返回更多的用户信息,用户没有关注,值为0,没有更多的信息



猜你喜欢

转载自blog.csdn.net/gaoxiang24/article/details/80195595