网站接入微信扫码登录并获取用户基本信息(微信开放平台)

网站接入微信扫码登录并获取用户基本信息(微信开放平台)现在的网站基本都接入微信登陆了,就好像下面这样的。只需要用微信扫一下二维码,这个网站就可以展示你的微信昵称和头像,免去注册账号和输入密码登录的步骤,还免去设置头像和昵称的步骤,所以是挺方便的。那么如何把自己的网站接入这个呢?首先咱们得先在微信开放平台注册账号并且创建一个网站应用,等待审核通过后就可以获得Appid和AppSecretbingqie并且还要设置回调域名,这个不多说。首…

大家好,又见面了,我是你们的朋友全栈君。

本文部分图片不能显示,我已经写了新的教程,可以看这篇文章:

https://segmentfault.com/a/1190000018028810

 

 

 

现在的网站基本都接入微信登陆了,就好像下面这样的。

clipboard.png

只需要用微信扫一下二维码,这个网站就可以展示你的微信昵称和头像,免去注册账号和输入密码登录的步骤,还免去设置头像和昵称的步骤,所以是挺方便的。

那么如何把自己的网站接入这个呢?首先咱们得先在微信开放平台注册账号并且创建一个网站应用,等待审核通过后就可以获得Appid和AppSecretbingqie并且还要设置回调域名,这个不多说。

首先我们根据官方文档的流程来做:

第一步:请求CODE

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

通过以上的接口请求CODE

请求参数:

clipboard.png

OK参数说的明白,咱就开始写代码了。

新建login.php

<?php
//生成state参数,利用MD5对时间戳进行加密生成32位数的state,也是为了简单哈哈,自己用其他方法生成吧
//时间戳
$time = time();
//对时间戳进行加密,就是state
$state = MD5($time);
//APPID
$appid = "你的APPID";
//redirect_uri回调地址,也就是请求完了之后,咱们需要跳转的地址,我这里直接跳转到我网站的oauth.php的地址,这个文件是 用来下一步获取access_token的
$redirect_uri = "http://www.xxx.com/open/oauth.php";
//scope默认是snsapi_login
$scope = "snsapi_login";

//拼接参数进行自动跳转
echo "<script>location.href=\"https://open.weixin.qq.com/connect/qrconnect?appid=$appid&redirect_uri=$redirect_uri&response_type=code&scope=$scope&state=$state#wechat_redirect\";</script>";
?>

 

我们在浏览器访问login.php后,就会生成一个code和携带了我们页面生成的state

 

即:redirect_uri?code=CODE&state=STATE

那么这两个参数,就进入和第二步需要用到CODE

第二步:通过code获取access_token

获取接口:

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

老样子,还是要构建请求参数

上面是有一个oauth.php的
这个文件已经接收到了code,我们就用这个文件构建请求参数

oauth.php

<?php
header("Content-type:text/html;charset=utf-8");
//获取login.php传过来的code
$code = $_GET["code"];

//通过接口获取access_token
//构造请求参数
$appid = "你的APPID";
$appsecret = "你的APPSecret";
//拼接参数,自动跳转
echo "<script>location.href=\"https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$appsecret&code=$code&grant_type=authorization_code\";</script>";
?>

如果成功,那么就会返回一个JSON数据

{
"access_token":"ACCESS_TOKEN", 
"expires_in":7200, 
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID", 
"scope":"SCOPE",
"unionid": "unionid"
}

否则:

{"errcode":40029,"errmsg":"invalid code"}

clipboard.png

成功截图:

clipboard.png

那么,openid都获取到了access_token也获取到了,能干啥?

当然是获取用户基本信息啊,直接调用接口就行。

第三步:获取用户基本信息

https://api.weixin.qq.com/sns/userinfo?access_token=获取到的ACCESS_TOKEN&openid=获取到的OPENID

然后访问,就是一堆用户基本信息了。

clipboard.png

头像,昵称,城市,国家,unionid

 

学习交流微信:face6009

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/139504.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java之MessageDigest简单使用总结

    java之MessageDigest简单使用总结1、说明MessageDigest是Java自带的类2、简单代码比如我们需要实现md5,或者sha加密publicclassMD5AndSHA{publicfinalstaticStringMD5_SHA(Strings,Stringmethod){charhexDigits[]=

    2022年6月16日
    32
  • Jenkins(2)docker容器中安装python3[通俗易懂]

    Jenkins(2)docker容器中安装python3[通俗易懂]前言使用docker安装jenkins环境,jenkins构建的workspace目录默认是在容器里面构建的,如果我们想执行python3的代码,需进容器内部安装python3的环境。进jenki

    2022年7月28日
    8
  • 判断一个数是否为素数(质数) c语言[通俗易懂]

    质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数。最小的质数是2,它也是唯一的偶数质数。原理:number只需被(2~根号下number)之间的每一个整数去除就可以了(包括根号下number这个数)。如果nummber不能被(2~根号下number)间任一整数整除,number必定是素数#include”stdio.h”#include”math.h”main(){ intnumber,i,n; printf(“请输入一个正整数:

    2022年4月7日
    52
  • WKT_WK是什么品牌

    WKT_WK是什么品牌WKT-概念WKT(Well-knowntext)是一种文本标记语言,用于表示矢量几何对象、空间参照系统及空间参照系统之间的转换。它的二进制表示方式,亦即WKB(well-knownbinar

    2022年8月4日
    8
  • tar 命令详解「建议收藏」

    tar 命令详解「建议收藏」tar命令[root@linux~]#tar[-cxtzjvfpPN]文件与目录….参数:-c:建立一个压缩文件的参数指令(create的意思);-x:解开一个压缩文件的参数指令!-t:查看tarfile里面的文件!-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能

    2022年6月5日
    28
  • asuswrt 单臂路由_OPENWRT-KOOLSHARE软路由,一级/单臂/二级/旁软路由设置单臂路由联网教程…

    asuswrt 单臂路由_OPENWRT-KOOLSHARE软路由,一级/单臂/二级/旁软路由设置单臂路由联网教程…【此文原创】此文基于单口软路由讨论一级/单臂路由LAN:IPV4设置除192.168.1.1之外和你局域网不冲突的地址,关闭桥接接口,物理设置eth0WAN:协议改成PPPOE,物理设置eth0二级/旁路由LAN:IPV4地址设置为上级路由网段地址,关闭DHCP。IPV4网关选择上级路由的网关地址。WAN:物理设置-桥接关掉,接口选择eth0-保存并应用客户端机:设置IP地址,网关为软路由地址,I…

    2022年5月16日
    59

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号