微信开放平台账号一个,必须是商户,不然你也开不了

1.在开放平台创建应用,并设置回调地址(域名即可)

2.生成二维码,前端代码,用户扫码后会给你的回调地址发送code

   <span id="login_container"></span>
<script src="http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script>
<script> var obj = new WxLogin({
id: "login_container",
appid: "appid",你的appid
scope: "snsapi_login",
redirect_uri: encodeURIComponent("你的回调地址(域名必须和你在开放平台的一致)"), state: Math.ceil(Math.random()*1000),
style: "black",
href: ""});
</script>

3.根据code获取  access_token 和 openid ,再用他们获取用户信息 代码如下

 public function login(){
$code = input('code');
$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid= 你的appid &secret= 你的AppSecret &code=".$code."&grant_type=authorization_code"; $access_token = $this->curl_get($url); if (!$access_token || isset($access_token['errcode'])){
return json(['code'=>0,'message'=>'登录失败']);
} $url = "https://api.weixin.qq.com/sns/userinfo?access_token=".$access_token['access_token']."&openid=".$access_token['openid']; $user = $this->curl_get($url); if (!$user){
return json(['code'=>0,'message'=>'登录失败']);
}
var_dump($user); // ["openid"]=> string(28) ""
// ["nickname"]=> string(1) "" 普通用户昵称
// ["sex"]=> int(1) 普通用户性别,1为男性,2为女性
// ["language"]=> string(5) "zh_CN"
// ["city"]=> string(0) "" 普通用户个人资料填写的城市
// ["province"]=> string(0) "" 普通用户个人资料填写的省份
// ["country"]=> string(2) "CN" 国家,如中国为CN
// ["headimgurl"]=> string(128) "" 头像
// ["privilege"]=> array(0) { } 用户特权信息,json数组,如微信沃卡用户为(chinaunicom)
// ["unionid"]=> string(28) "" 用户统一标识。针对一个微信开放平台帐号下的应用,同一用户的unionid是唯一的。 } protected function curl_get($url){ $header = array(
'Accept: application/json',
);
$curl = curl_init(); //设置抓取的url
curl_setopt($curl, CURLOPT_URL, $url); //设置头文件的信息作为数据流输出
curl_setopt($curl, CURLOPT_HEADER, 0); // 超时设置,以秒为单位
curl_setopt($curl, CURLOPT_TIMEOUT, 1); // 超时设置,以毫秒为单位
// curl_setopt($curl, CURLOPT_TIMEOUT_MS, 500); // 设置请求头
curl_setopt($curl, CURLOPT_HTTPHEADER, $header); //设置获取的信息以文件流的形式返回,而不是直接输出。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); //执行命令
$data = curl_exec($curl); // 显示错误信息
if (curl_error($curl)) {
return false;
} else {
// 打印返回的内容
return json_decode($data,true);
}
}

参考文章 :https://www.jianshu.com/p/070586d73eba

网站实现微信扫码登录 php的更多相关文章

  1. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-6.微信扫码登录回调本地域名映射工具Ngrock

    笔记 6.微信扫码登录回调本地域名映射工具Ngrock         简介:讲解微信扫码回调本地域名ngrock讲解 1.为什么要用这个,微信扫码需要配置回调,需要配置对应的域名          ...

  2. Web应用多账号系统设计及微信扫码登录实现

    Web应用多账号系统设计及微信扫码登录实现 1   前言概述 公司对功能测试,性能测试,安全测试等等都做了比较好的自动化后,急需要一个MIS系统来统一管理这些结果及报表. 此MIS系统特点如下: 仅内 ...

  3. 微信开放平台开发——网页微信扫码登录(OAuth2.0)

    1.OAuth2.0 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. 允许用户提供 ...

  4. Vue+abp微信扫码登录

    最近系统中要使用微信扫码登录,根据微信官方文档和网络搜索相关文献实现了.分享给需要的人,也作为自己的一个笔记.后端系统是基于ABP的,所以部分代码直接使用了abp的接口,直接拷贝代码编译不通过. 注册 ...

  5. 第三方登录:微信扫码登录(OAuth2.0)

    1.OAuth2.0 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. 允许用户提供 ...

  6. php微信开放平台--第三方网页微信扫码登录(OAuth2.0)

    第一.OAuth2.0 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. 允许用户提 ...

  7. PHP对接微信扫码登录

    1.PC端扫码登录 如果你将微信小程序和公众账号绑定同一个微信开放平台,那么他们各自的接口返回有一个参数unionid是相同的(没有绑定微信公众账号就没有):那么你就可以使用这个unionid来做业务 ...

  8. Android (微信扫码登录) 获取微信二维码+扫码登录

    话不多说  直接上菜! 一.因为是微信扫码登录,所有要在微信开放平台  微信开放平台 (qq.com) 进行注册----- 如下 1.资源中心 里面也有详细的官方讲解,里面也有demo  可以下载 2 ...

  9. C#开发微信门户及应用(45)--微信扫码登录

    在前面随笔<C#开发微信门户及应用(41)--基于微信开放平台的扫码登录处理>介绍了基于微信开放平台接口实现的微信扫码直接登录的过程.本篇介绍对扫码登录的一些改进和处理,以便更方便应用在实 ...

随机推荐

  1. MySql中varchar和char,如何选择合适的数据类型?

    背景 学过MySQL的同学都知道MySQL中varchar和char是两种最主要的字符串类型,varchar是变长的类型,而char是固定长度.那关于如何选择类型就成为令人头疼的事,很多初学者为了保证 ...

  2. .net core2.2 HealthChecks记录

    abp core2.2版时使用 healthChecks使用:安装nuget包:Microsoft.AspNetCore.Diagnostics.HealthChecks startup.cs 中的 ...

  3. centos7源码编译安装LNMP+ZABBIX4.0LTS(1)——nginx

    环境:192.168.117.132--zabbix server192.168.117.133--zabbix proxy 安装路径为/zabbix 安装nginx 1.安装包下载http://ng ...

  4. 备战noip week8

    POJ1144 网络 description: 给出一张\(N\)个点的无向图,求其中割点的个数 data range: \(N\le 100\) solution: 一道模板题(但是读入实在是把我恶 ...

  5. Redis学习笔记(五)——数据结构之哈希(Hash)

    一.介绍 Redis hash是一个string类型的field和value的映射表,hash特别设于用于存储对象. Redis中每个hash可以存储232 - 1 键值对(40多亿). 基本命令: ...

  6. D. The Wu 解析(思維、二進位運算)

    Codeforce 1017 D. The Wu 解析(思維.二進位運算) 今天我們來看看CF1017D 題目連結 題目 略,請直接看原題 前言 官方解答實在看不懂...之後還記得的話再補那個做法吧 ...

  7. 什么是SOAP?SOAP有什么用?什么时候会用到SOAP?

    什么是SOAP SOAP(Simple Object Access Protocol)一般指简单对象访问协议,简单对象访问协议是交换数据的一种协议规范,是一种轻量的.简单的.基于XML(标准通用标记语 ...

  8. k8s各组件启动时, -v参数指定的日志级别

    k8s 相关组件启动时 -v参数指定的日志级别 --v=0 Generally useful for this to ALWAYS be visible to an operator. --v=1 A ...

  9. pytorch 图像分类数据集(Fashion-MNIST)

    import torch import torchvision import torchvision.transforms as transforms import matplotlib.pyplot ...

  10. Java创建二叉树、二叉树的遍历

    创建二叉树: public class Node {     // 左子节点     public Node leftNode;     // 右子节点     public Node rightNo ...