php实现微信扫码登陆,PHP实现微信开放平台扫码登录源码下载[通俗易懂]

php实现微信扫码登陆,PHP实现微信开放平台扫码登录源码下载[通俗易懂]1、首先到微信开放平台申请https://open.weixin.qq.com/获取到appid和APPSECRET,前台显示页面如下varobj=newWxLogin({id:”login_container”,appid:”wxed782be999f86e0e”,scope:”snsapi_login”,redirect_uri:encodeURIComponent(“htt…

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

38b302dcf26f3ce05e440083d5575dd9.png

1、首先到微信开放平台申请https://open.weixin.qq.com/ 获取到appid和APPSECRET,前台显示页面如下

var obj = new WxLogin({

id: “login_container”,

appid: “wxed782be999f86e0e”,

scope: “snsapi_login”,

redirect_uri: encodeURIComponent(“http://” + window.location.host + “/login.php”),

state: Math.ceil(Math.random()*1000),

style: “black”,

href: “”});

2、PHP处理代码页面

/*

require_once(‘weixin.class.php’);

$weixin = new class_weixin();

*/

define(‘APPID’,        “”);

define(‘APPSECRET’,    “”);

class class_weixin

{

var $appid = APPID;

var $appsecret = APPSECRET;

//构造函数,获取Access Token

public function __construct($appid = NULL, $appsecret = NULL)

{

if($appid && $appsecret){

$this->appid = $appid;

$this->appsecret = $appsecret;

}

//扫码登录不需要该Access Token, 语义理解需要

//1. 本地写入

$res = file_get_contents(‘access_token.json’);

$result = json_decode($res, true);

$this->expires_time = $result[“expires_time”];

$this->access_token = $result[“access_token”];

if (time() > ($this->expires_time + 3600)){

$url = “https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=”.$this->appid.”&secret=”.$this->appsecret;

$res = $this->http_request($url);

$result = json_decode($res, true);

$this->access_token = $result[“access_token”];

$this->expires_time = time();

file_put_contents(‘access_token.json’, ‘{“access_token”: “‘.$this->access_token.'”, “expires_time”: ‘.$this->expires_time.’}’);

}

}

/*

*  PART1 网站应用

*/

/*

header(“Content-type: text/html; charset=utf-8”);

require_once(‘wxopen.class.php’);

$weixin = new class_weixin();

if (!isset($_GET[“code”])){

$redirect_url = ‘http://’.$_SERVER[‘HTTP_HOST’].$_SERVER[‘REQUEST_URI’];

$jumpurl = $weixin->qrconnect($redirect_url, “snsapi_login”, “123”);

Header(“Location: $jumpurl”);

}else{

$oauth2_info = $weixin->oauth2_access_token($_GET[“code”]);

$userinfo = $weixin->oauth2_get_user_info($oauth2_info[‘access_token’], $oauth2_info[‘openid’]);

var_dump($userinfo);

}

*/

//生成扫码登录的URL

public function qrconnect($redirect_url, $scope, $state = NULL)

{

$url = “https://open.weixin.qq.com/connect/qrconnect?appid=”.$this->appid.”&redirect_uri=”.urlencode($redirect_url).”&response_type=code&scope=”.$scope.”&state=”.$state.”#wechat_redirect”;

return $url;

}

//生成OAuth2的Access Token

public function oauth2_access_token($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->http_request($url);

return json_decode($res, true);

}

//获取用户基本信息(OAuth2 授权的 Access Token 获取 未关注用户,Access Token为临时获取)

public function oauth2_get_user_info($access_token, $openid)

{

$url = “https://api.weixin.qq.com/sns/userinfo?access_token=”.$access_token.”&openid=”.$openid.”&lang=zh_CN”;

$res = $this->http_request($url);

return json_decode($res, true);

}

首先须要申请,必须企业,个体工商户,媒体等,是开放平台,注意不是公众平台,是开放平台:申请地址:https://open.weixin.qq.com

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

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

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


相关推荐

  • 40款帮助你加薪的IDEA神器插件![通俗易懂]

    写在前面的话:大家好,我是全栈小刘,一名零零后的编程爱好者。从初中开始编程,对编程有独特情怀,热爱技术,目前已有五年的编程经验,做过许许多多有意思的项目,这篇博客,算是对自己学习的一个总结,算是一份笔记,如果你对Java全栈感兴趣可以关注我的动态一起学习1.01的365次方=37.78343433289>>>10.99的365次方=0.02551796445…

    2022年4月17日
    101
  • 移动文件到文件夹 linux_centos移动文件

    移动文件到文件夹 linux_centos移动文件Linux移动或复制文件(文件夹)命令格式:cp-rf/home/backup/default/Public/Public/复制/home/backup/default/Public文件夹到当前文件夹下补充cp该命令的各选项含义如下-a该选项通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目录,其作用等于dpR选项的组合。  -d拷贝时保留链接。…

    2022年8月23日
    11
  • 华为三层交换机配置vlanif_华为三层交换机查看路由表

    华为三层交换机配置vlanif_华为三层交换机查看路由表实验拓扑实验需求1、C1与C3属于VLAN10,C2与C4属于VLAN20,在SW1上创建VLAN100做上行VLAN2、在SW1上终结所有VLAN3、在所有VLAN成员使用DHCP获取IP4、全网互通IP规划VLAN10:192.168.10.0/24VLAN20:192.168.20.0/24VLAN100:192.168.100.10/24R1G0/0/0:192…

    2025年11月30日
    25
  • Redis哨兵模式主从同步不可以绑定127.0.0.1或者0.0.0.0,不然无法进行主从同步

    Redis哨兵模式主从同步不可以绑定127.0.0.1或者0.0.0.0,不然无法进行主从同步

    2021年6月6日
    92
  • FindWindowEx的用法「建议收藏」

    FindWindowEx的用法「建议收藏」FindWindowEx完整定义如下:HWNDFindWindowEx(HWNDhwndParent,//父窗口句柄HWNDhwndChildAfter,//开始的子窗口句柄,这个参数很有用LPCTSTRlpszClass,//类名LPCTSTR

    2022年5月31日
    42
  • 【开发经验】java socket编程详解

    【开发经验】java socket编程详解前言​ 在大多数的java项目中,使用开发者直接使用socket的场景并不多。但是目前众多框架的底层中,都会有socket的身影。此示例一下java原始的socket编程,并通过telnet进行通讯。1、功能实现如上图所示,主要实现服务器开启服务,每个客户端链接时都分配一个新的线程与其通讯。2、服务端代码:importjava.io.InputStream;importjava.net.ServerSocket;importjava.net.Socket;importjava.u

    2022年7月7日
    25

发表回复

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

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