微信网页授权(OAuth2.0) PHP 源码简单实现

提要:

  1. 建议对OAuth2.0协议做一个学习。

  2. 微信官方文档和微信官网工具要得到充分利用。

比较简单,直接帖源代码了。其中“xxxxxxxxxx”部分,是需要依据自己环境做替换的

/**
     * OAuth2.0微信授权登录实现
     *
     * @author zzy
     * @文件名:GetWxUserInfo.php
     */

    // 回调地址
    $url = urlencode("http://www.xxxxxxxxx.com/GetWxUserInfo.php");
    // 公众号的id和secret
    $appid = ‘xxxxxxxxx‘;
    $appsecret = ‘xxxxxxxxx‘;
    session_start();

    // 获取code码,用于和微信服务器申请token。 注:依据OAuth2.0要求,此处授权登录需要用户端操作
    if(!isset($_GET[‘code‘]) && !isset($_SESSION[‘code‘])){
        echo
        ‘<a href="https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx6c11a252ff1d00c4
        &redirect_uri=‘.$url.‘&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect">
        <font style="font-size:30">授权</font></a>‘;

        exit;
    }

    // 依据code码去获取openid和access_token,自己的后台服务器直接向微信服务器申请即可
    if (isset($_GET[‘code‘]) && !isset($_SESSION[‘token‘])){
        $_SESSION[‘code‘] = $_GET[‘code‘];

        $url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid.
            "&secret=".$appsecret."&code=".$_GET[‘code‘]."&grant_type=authorization_code";
        $res = https_request($url);
        $res=(json_decode($res, true));
        $_SESSION[‘token‘] = $res;
    }

    print_r($_SESSION);

    // 依据申请到的access_token和openid,申请Userinfo信息。
    if (isset($_SESSION[‘token‘][‘access_token‘])){
        $url = "https://api.weixin.qq.com/sns/userinfo?access_token=".$_SESSION[‘token‘][‘access_token‘]."&openid=".$_SESSION[‘token‘][‘openid‘]."&lang=zh_CN";
        echo $url;
        $res = https_request($url);
        $res = json_decode($res, true);

        $_SESSION[‘userinfo‘] = $res;

    }

    print_r($_SESSION);

    // cURL函数简单封装
    function https_request($url, $data = null)
    {
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
        if (!empty($data)){
            curl_setopt($curl, CURLOPT_POST, 1);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        }
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($curl);
        curl_close($curl);
        return $output;
    } 

得到正确结果如下:

 

Array
(
    [code] => 041GZI4l0tvGHg10N75l05FQ4l0GZI42
    [token] => Array
        (
            [access_token] => TWo6w5QMpzTZibu3FPh2k4EdC5bllp4sGeQkC4NbZtj-zti-ctZj1SrrNL1qGCf2lB1-6o3N7kh2bcxl5bxtQqJEGk1cq12l8CzF40R9XvA
            [expires_in] => 7200
            [refresh_token] => Iz3olCrkqPBOJvSSH2bOKvA09Sjvsp1c8Ltm7MvxxPfQXSbvI_WoVmzhjqASzwlMa7TAGgsg3mIJmaHjL7jrJHDqUF1jKbhd6GNDnLtXq0U
            [openid] => ota_XwQ4r_5nioVmshQ
            [scope] => snsapi_userinfo
        )

    [userinfo] => Array
        (
            [openid] => ota_XwQ4r_5nioVmshQq
            [nickname] => 野狐
            [sex] => 1
            [language] => zh_CN
            [city] => 杭州
            [province] => 浙江
            [country] => 中国
            [headimgurl] => http://wx.qlogo.cn/mmopen/PiajxSqBRaELwee7rhrt2ibnkC1MEnu04WiaWrw9FkuPBbGOgnrMbynNoEuxicgXOetW5VqQbTrS4fZDXNvAWsz6GQ/0
            [privilege] => Array
                (
                )

        )

)

 

时间: 2024-08-08 17:51:04

微信网页授权(OAuth2.0) PHP 源码简单实现的相关文章

Java微信公众平台开发(十六)--微信网页授权(OAuth2.0授权)获取用户基本信息

转自:http://www.cuiyongzhi.com/post/78.html 好长时间没有写文章了,主要是最近的工作和生活上的事情比较多而且繁琐,其实到现在我依然还是感觉有些迷茫,最后还是决定静下心来坚持一开始的选择,继续我们的微信系列文章的后续更新,也希望在自己有时间的时候能把更多的内容呈现给大家,前面一系列的文章讲述了很多微信开发相关的基础知识点 [微信系列文章],那么从这一篇开始将讲述微信较深一层次或者说在产品应用中时刻会用到的一些技术点,那么下面就让我们进入正题吧,这一篇我要讲述的

C#微信公众号开发之网页授权oauth2.0获取用户基本信息(二)

C#微信公众号开发之网页授权oauth2.0获取用户基本信息(一) 中讲解了如果通过微信授权2.0snsapi_base获取已经关注用户的基本信息,然而很多情况下我们经常需要获取非关注用户的信息,方法如下: 第一步和之前讲的一样:获取code,但是scope使用方法是snsapi_userinfo; 第二步,根据code获取openid和access_token(此处的access_token是通过网页授权code换取的不是我们之前讲的全局的票据),代码: 1 /// <summary> 2

C#微信公众号开发之网页授权oauth2.0获取用户基本信息

咨询 请加 QQ::QQ群: 在微信里面,非认证的公众号账号,只能通过在微信回复菜单单击等事件获取openid,但是认证的公众账号(之前认证的订阅号是不可以的,现在新开放了)可以直接在微信打开的链接中获取用户的基本信息包括openid.这里用一种比较简单的获取用户信息的网页授权的方式.注意:这中方式只可以获取关注用户的信息,非关注用户是不可以获取的. 一.获取Code  假设我们需要网页授权的页面的地址为redirect_uri 需要获取Code的话我们第一步是跳转到授权地址,我们第一步便是获取

Java企业微信开发_09_身份验证之移动端网页授权(有完整项目源码)

注: 源码已上传github: https://github.com/shirayner/WeiXin_QiYe_Demo 一.本节要点 1.1 授权回调域(可信域名) 在开始使用网页授权之前,需要先设置一下授权回调域.这里瞬间想到之前做JSSDK的时候,也设置过一个域名.二者本质上都是设置可信域名. 当用户授权完毕之后,请求将重定向到此域名(或者子域名)下的执行者(jsp页面或者servlet等).如何设置授权回调域,请见第二节. 1.2 获取Code https://open.weixin.

第三方平台代公众号发起网页授权OAuth2.0,获取openid

官方文档地址 开放平台配置 单元测试test.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String url = java.net.URLEncoder.encode("http://域名/oauth.jsp","UTF-8"); %> <!DOCTYPE HTML P

微信公众平台oauth2.0网页授权

本篇文章你将学到:在自己做的微信网站里,利用oauth2.0网页授权接口获取用户的信息(openid,姓名,性别,地区,头像等).如大转盘等游戏记录哪个微信用户获得什么奖品.H5等小游戏需要把分数与对应用户捆绑在一起等网页应用. 微信公众平台oauth2.0网页授权能干什么 它是在自己做的网站中不用用户登录来获取微信用户相关信息的,进而实现相关业务. 说明与注意 1.网页授权分为两种, 一种为只获取openid  (基本授权 snsapi_base) 一种为获取用户全部信息 (高级授权 snsa

OAuth2.0微信网页授权登录

功能:用于纪录微信网页授权步骤(前提条件:公众号为服务号,且通过认证) 微信网页授权api说明网址:https://mp.weixin.qq.com/wiki/4/9ac2e7b1f1d22e9e57260f6553822520.html 相关说明:目前微信api有两种方式获取用户信息.第一种是用户管理获取用户基本信息(包括UnionID机制),这个前提是用户必须事先已经关注公众号,通过获取基础access_token和openID来获取用户信息.第二种是以snsapi_userinfo为sco

OAuth 2.0及微信网页授权

理解OAuth 2.0 by 阮一峰 微信网页授权

微信网页授权,微信登录,oauth2

微信官方文档: http://mp.weixin.qq.com/wiki 微信公众平台OAuth2.0授权详细步骤如下: 1. 用户关注微信公众账号.2. 微信公众账号提供用户请求授权页面URL.3. 用户点击授权页面URL,将向服务器发起请求4. 服务器询问用户是否同意授权给微信公众账号(scope为snsapi_base时无此步骤)5. 用户同意(scope为snsapi_base时无此步骤)6. 服务器将CODE通过回调传给微信公众账号7. 微信公众账号获得CODE8. 微信公众账号通过C