美文网首页
Laravel中微信网页授权

Laravel中微信网页授权

作者: 曹轩跃 | 来源:发表于2017-08-14 15:53 被阅读0次

    说明:本文介绍的教程是基于Laravel5.4版本,Wechat3.0.*版本组件

    1. 安装组件

    composer require "overtrue/laravel-wechat:~3.0"
    

    注意:如果你用了 laravel-debugbar,请禁用或者关掉,否则这模块别想正常使用!!!

    2. 配置

    Laravel应用

    1 .注册 ServiceProvider:

    Overtrue\LaravelWechat\ServiceProvider::class,

    1. 创建配置文件:

    php artisan vendor:publish --provider="Overtrue\LaravelWechat\ServiceProvider"

    1. 请修改应用根目录下的 config/wechat.php 中对应的项即可;
    2. (可选)添加外观(门面)到 config/app.php 中的 aliases 部分:

    'EasyWeChat' => Overtrue\LaravelWechat\Facade::class,

    Lumen应用

    1. 在 bootstrap/app.php 中 82 行左右:

    $app->register(Overtrue\LaravelWechat\ServiceProvider::class);

    1. ENV 中支持以下配置:
    WECHAT_APPID
    WECHAT_SECRET
    WECHAT_TOKEN
    WECHAT_AES_KEY
    
    WECHAT_LOG_LEVEL
    WECHAT_LOG_FILE
    
    WECHAT_OAUTH_SCOPES
    WECHAT_OAUTH_CALLBACK
    
    WECHAT_PAYMENT_MERCHANT_ID
    WECHAT_PAYMENT_KEY
    WECHAT_PAYMENT_CERT_PATH
    WECHAT_PAYMENT_KEY_PATH
    WECHAT_PAYMENT_DEVICE_INFO
    WECHAT_PAYMENT_SUB_APP_ID
    WECHAT_PAYMENT_SUB_MERCHANT_ID
    WECHAT_ENABLE_MOCK
    
    1. 如果你习惯使用 config/wechat.php 来配置的话,将 vendor/overtrue/laravel-wechat/src/config.php 拷贝到app/config目录下,并将文件名改成wechat.php。

    3. 使用

    Laravel使用

    网页授权实例
    <?php
    use EasyWeChat\Foundation\Application;
    $config = [
      // ...
      'oauth' => [
          'scopes'   => ['snsapi_userinfo'],
          'callback' => '/oauth_callback',
      ],
      // ..
    ];
    $app = new Application($config);
    $oauth = $app->oauth;
    // 未登录
    if (empty($_SESSION['wechat_user'])) {
      $_SESSION['target_url'] = 'user/profile';
      return $oauth->redirect();
      // 这里不一定是return,如果你的框架action不是返回内容的话你就得使用
      // $oauth->redirect()->send();
    }
    // 已经登录过
    $user = $_SESSION['wechat_user'];
    // ...
    
    授权回调实例
    <?php
    use EasyWeChat\Foundation\Application;
    $config = [
      // ...
    ];
    $app = new Application($config);
    $oauth = $app->oauth;
    // 获取 OAuth 授权结果用户信息
    $user = $oauth->user();
    $_SESSION['wechat_user'] = $user->toArray();
    $targetUrl = empty($_SESSION['target_url']) ? '/' : $_SESSION['target_url'];
    header('location:'. $targetUrl); // 跳转到 user/profile
    

    注意:上面的例子呢都是基于 $_SESSION 来保持会话的,在微信客户端中,你可以结合 COOKIE 来存储,但是有效期平台不一样时间也不一样,好像 Android 的失效会快一些,不过基本也够用了。

    Lumen使用

    网页授权实例
    <?php
    use EasyWeChat\Foundation\Application;
    
    $options = [
                'app_id' => env('WECHAT_APPID'),
                'secret' => env('WECHAT_SECRET'),
                'oauth' => [
                    'scopes'   => ['snsapi_userinfo'],
                    'callback' => '/oauth_callback',
                ],
            ];
            $app = new Application($options);
            $oauth = $app->oauth;
    
            // 未登录(未授权)
            if (empty(app('cache')->get('wechat_user'))) {
                app('cache')->put('target_url', '/html');
                return $oauth->redirect();
            } else {
                return redirect('/html');
            }
    
    授权回调实例
    use EasyWeChat\Foundation\Application;
    
     $options = [
                'app_id' => env('WECHAT_APPID'),
                'secret' => env('WECHAT_SECRET'),
                'oauth' => [
                    'scopes'   => ['snsapi_userinfo'],
                    'callback' => '/oauth_callback',
                ],
            ];
    
            $app = new Application($options);
            $oauth = $app->oauth;
    
            // 获取 OAuth 授权结果用户信息
            $user = $oauth->user();
            app('cache')->put('wechat_user', $user->toArray(), 120);
    
            $targetUrl = empty(app('cache')->get('target_url')) ? '/html' : app('cache')->get('target_url');
    
            //header('location:'. $targetUrl); // 跳转到 user/profile
            return redirect($targetUrl);
    
    :pray:

    注意:$user 里没有 openid, $user->id 便是 openid.如果你想拿微信返回给你的原样的全部信息,请使用:$user->getOriginal();

    相关文章

      网友评论

          本文标题:Laravel中微信网页授权

          本文链接:https://www.haomeiwen.com/subject/fzpurxtx.html