我是靠谱客的博主 踏实白开水,最近开发中收集的这篇文章主要介绍微信登录授权的一个记录。,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

与小程序的区别

先来说说与小程序的区别,在小程序里面,在管理后台配置好自身服务器域名后,只需要调用getUserInfo,即提示用户授权信息,可以获取当前用户的微信名、头像、地区等等信息,以及所需的code。自身服务器得到code后,再将code发送给微信服务器,调用换取接口,即可获得openid和token等微信登录相关信息。 整个流程还是比较简单的。

而在H5授权登录页面里,同样需要先配置自身的服务器域名,但是之后的步骤有点不一样。

H5登录授权

(以下操作都默认已经在微信授权后台配置好了域名。)

授权流程

  1. 发起授权
    获得appId以及appSecrect后,只要在微信端打开

    https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$this->appId.'&redirect_uri='.$dir_url.'&response_type=code&scope=snsapi_userinfo&state='.$state.'#wechat_redirect

    即可在发起微信授权,考虑到具体的业务逻辑,这里我定义了一个小接口,用于前端的访问

/**
* 微信登录重定向
*/
public function toLogin(){
$dir_url="http://".$_SERVER['SERVER_NAME'].url("Login/login"); //绝对路径,必须以/结尾 返回地址
$state = '';
//
echo $this->appId;die;
header('location:https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$this->appId.'&redirect_uri='.$dir_url.'&response_type=code&scope=snsapi_userinfo&state='.$state.'#wechat_redirect');
}
/*
$dir_url 即为真正执行登录流程的接口,在授权成功后,则会回调这个接口,这时候正常登录就可以了。
补充这个接口的意义在于,能够让前端在一些需要授权登录的页面直接调用,不用考虑其他细节,因为是服务端重定向,所以会照常返回登录的一些信息。
这样业务逻辑就很像小程序的getUserInfo了。
实际上由前端去打开授权页面也是可以的,具体看业务逻辑。 总之最终都是授权成功后回调到真正的业务登录接口。
*/

2.授权成功

授权成功后,微信会以GET请求方式,发送一个code到回调服务器(也就是我们的项目服务器),得到了code,可以用这个code去访问微信服务器,换取微信登录的token,以及该用户的openid(项目内的用户唯一标示)。此后,再将token以及openid,再次发送到微信服务器上,换取我们真正需要的用户信息,头像、微信名、性别、地区等。

听起来有点绕,实际流程就是这样的:

code =====> 换取openid和token =======> 换取用户信息。

demo如下:


//code换取token和openid
$code = request()->get('code','');
$url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$this->appId.'&secret='.$this->appSecret.'&code='.$code.'&grant_type=authorization_code';
$res = $this->makeRequest($url);
$data = json_decode($res['result'],true);
$token = $data['access_token'];
$openid = $data['openid'];
//token和openid 换取用户信息
$url2 = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$token.'&openid='.$openid.'&lang=zh_CN';
$res = $this->makeRequest($url2);
$user_info = json_decode($res['result'],true);
//这里user_info,就包含用户信息了。 之后就是正常的登录流程,存入/更新用户数据库,生成token,写入redis,以及返回秘钥给前端

以上。

最后

以上就是踏实白开水为你收集整理的微信登录授权的一个记录。的全部内容,希望文章能够帮你解决微信登录授权的一个记录。所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部