php实现微信网页授权回调代理

一个简单的php文件,实现微信网页授权回调域名的代理转发 

<?php
function is_HTTPS()
{
    if (!isset($_SERVER[‘HTTPS‘])) return FALSE;
    if ($_SERVER[‘HTTPS‘] === 1) {  //Apache
        return TRUE;
    } elseif ($_SERVER[‘HTTPS‘] === ‘on‘) { //IIS
        return TRUE;
    } elseif ($_SERVER[‘SERVER_PORT‘] == 443) { //其他
        return TRUE;
    }
    return FALSE;
}
function getDomain()
{
    $server_name = $_SERVER[‘SERVER_NAME‘];
    if (strpos($server_name, ‘www.‘) !== false) {
        return substr($server_name, 4);
    }
    return $server_name;
}
$appid = ‘‘;
$scope = ‘snsapi_login‘;
$state = ‘‘;
$code = ‘‘;
$redirect_uri = ‘‘;
$device = ‘‘;
$protocol = ‘‘;
if (is_HTTPS()) {
    $protocol = ‘https‘;
} else {
    $protocol = ‘http‘;
}
if (isset($_GET[‘device‘])) {
    $device = $_GET[‘device‘];
}
if (isset($_GET[‘appid‘])) {
    $appid = $_GET[‘appid‘];
}
if (isset($_GET[‘state‘])) {
    $state = $_GET[‘state‘];
}
if (isset($_GET[‘redirect_uri‘])) {
    $redirect_uri = $_GET[‘redirect_uri‘];
}
if (isset($_GET[‘code‘])) {
    $code = $_GET[‘code‘];
}
if (isset($_GET[‘scope‘])) {
    $scope = $_GET[‘scope‘];
}
if ($code == ‘test‘) {
    exit;
}
if (empty($code)) {
    $authUrl = ‘‘;
    if ($device == ‘pc‘) {
        $authUrl = ‘https://open.weixin.qq.com/connect/qrconnect‘;
    } else {
        $authUrl = ‘https://open.weixin.qq.com/connect/oauth2/authorize‘;
    }
    $options = [
        $authUrl,
        ‘?appid=‘ . $appid,
        ‘&redirect_uri=‘ . urlencode($protocol . ‘://‘ . $_SERVER[‘HTTP_HOST‘] . ‘/‘),
        ‘&response_type=code‘,
        ‘&scope=‘ . $scope,
        ‘&state=‘ . $state,
        ‘#wechat_redirect‘
    ];
    //把redirect_uri先写到cookie
    header(implode(‘‘, [
        "Set-Cookie: redirect_uri=",
        urlencode($redirect_uri),
        "; path=/; domain=",
        getDomain(),
        "; expires=" . gmstrftime("%A, %d-%b-%Y %H:%M:%S GMT", time() + 60),
        "; Max-Age=" + 60,
        "; httponly"
    ]));
    header(‘Location: ‘ . implode(‘‘, $options));
} else {
    if (isset($_COOKIE[‘redirect_uri‘])) {
        $back_url = urldecode($_COOKIE[‘redirect_uri‘]);
        header(‘Location: ‘ . implode(‘‘, [
                $back_url,
                strpos($back_url, ‘?‘) ? ‘&‘ : ‘?‘,
                ‘code=‘ . $code,
                ‘&state=‘ . $state
            ]));
    }
}
?>

转自:http://www.cnblogs.com/lyzg/p/6159617.html

相关链接:https://github.com/liuyunzhuge/php_weixin_proxy

https://github.com/lionskys/codetoany

原文地址:https://www.cnblogs.com/7qin/p/10657513.html

时间: 2024-11-09 15:53:25

php实现微信网页授权回调代理的相关文章

解决微信网页授权一个回调域名多个业务使用

前言 我们都知道微信的网页授权回调域名只能设置一个,但是多个业务使用同一个微信公众号授权信息的话,就需要使用者内部进行处理了,下面给出我使用的一种简陋的解决方案. 方法 正常流程 1: 第一步:用户同意授权,获取code 2: 第二步:通过code换取网页授权access_token 3: 第三步:拉取用户信息 多业务 1:第一步:内部接口接受到获取请求,跳转微信授权链接 2: 第二步:用户同意授权,获取code 3: 第三步:通过code换取网页授权access_token 4: 第四步:拉取

微信网页授权demo2

1.在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的“开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息”的配置选项中,修改授权回调域名.请注意,这里填写的是域名(是一个字符串),而不是URL,因此请勿加 http:// 等协议头: 比如需要网页授权的域名为:www.qq.com,配置以后此域名下面的页面http://www.qq.com/music.html . http://www.qq.com/login.html 都可以进行OAuth2.0鉴权.

手把手实现微信网页授权和微信支付,附源代码(VUE and thinkPHP)

wechat github 概述 公众号开发是痛苦的,痛苦在好多问题开发者文档是没有提到的,是需要你猜的. 在开发过程中翻了好多的文档,都是说明其中的一部分问题的,很费时间,所以在此总结大体过程.我们模拟的是一个支付的商城,在实现购买过程中基本是把微信公众号最主要模块实现了,其余的功能我们没有涉及,但应该是触类旁通的. 我们叙述的过程是按开发流程进行叙述的,不会是按照开发文档的形式叙述,希望您能结合微信的开发文档一起阅读,当然在流程中我们会提醒你阅读的部分 目录 概述 [解决的问题] [前端技术

微信网页授权认证获取用户的详细信息,实现自动登陆-微信公众号开发干货

原创声明:本文为本人原创作品,绝非他处转账,转载请联系博主 从接触公众号到现在,开发维护了2个公众号,开发过程中遇到很多问题,现在把部分模块功能在这备案一下,做个总结也希望能给其他人帮助 工欲善其事,必先利其器,先看看开发公众号需要准备或了解什么 web开发工具:官方提供的开发工具,使用自己的微信号来调试微信网页授权.调试.检验页面的 JS-SDK 相关功能与权限,模拟大部分 SDK 的输入和输出.下载地址:web开发工具下载 开发文档:https://mp.weixin.qq.com/wiki

微信网页授权

微信网页授权 1 以下位置是微信网页授权 2 登陆微信公众平台测试号,修改"网页授权获取用户基本信息"选项 3 定义授权页面,用户打开此页面,则会跳转到 redirect_uri/?code=CODE&state=STATE,可以获取到code https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx520c15f417810387&redirect_uri=https%3A%2F%2Fchong.qq.c

微信网页授权获取用户基本信息

微信公众号可以通过微信网页授权机制,来获取用户基本信息,可以用于微信登录功能 关于网页授权的两种scope的区别说明 1.静默授权:以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的.用户感知的就是直接进入了回调页(往往是业务页面) 2.显示授权:以snsapi_userinfo为scope发起的网页授权,是用来获取用户的基本信息的.但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的

微信公众平台,微信网页授权,redirect_uri参数错误,解决方法!

刚才在做微信网页授权的时候,发生一个错误!!!微信网页授权redirect_uri 参数错误! 遇到问题,第一时间应该做的就是查看官网微信公众平台的技术文档. 微信网页授权 如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑. 关于网页授权回调域名的说明 1.在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的"开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息"的配置选项中,修改授权回调域名

玩玩微信公众号Java版之六:微信网页授权

我们经常会访问一些网站,用微信登录的时候需要用到授权,那么微信网页授权是怎么一回事呢,一起来看看吧! 参考官方文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842 官方的文档有很详细的说明,这里就主要分析重要的几点: 第一,网页授权分类及说明: 1.以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的.用户感知的就是直接进入了回调页(往往

微信网页授权验证

首先今天是2016的第一天,但是有思想的东西不管在何时都要和大家分享,这里首先预祝大家新年快乐!新的一年快快升职加薪. 今天主要是最近一直困扰我的一个问题的思路讲解 ,微信网页授权验证这个一直困扰我,以为很多网上的图解和别人的讲解没有达到自己想要的答案. 所以总是不在一条思路上,最后真的是没有办法了,理解不了,那么就只能实践 了: 下面是这个思路:(上面废话多了一些有需要一起讨论学习,共享源码的请加QQ群:216390234) 微信API上分为5个步骤 主要的是在第一步,我很不明白为什么那个授权