校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Laravel 集成微信用戶登錄和綁定的實現

Laravel 集成微信用戶登錄和綁定的實現

熱門標簽:青島語音外呼系統招商 百應電話機器人服務 岳陽外呼型呼叫中心系統在哪里 昭通辦理400電話 河南電銷卡外呼系統哪家強 山西回撥外呼系統 山西探意電話機器人 揚州地圖標注app 騰訊外呼管理系統

最近主要在忙活微信與支付寶平臺的對接與開發,本篇就基于后端層面來講述一下微信的登錄與綁定實現。

(一)申請微信開放平臺

最首先的話就是需要去微信開發中心https://open.weixin.qq.com,創建一個賬號,然后創建自己的移動或網站應用。

創建完成后,就會需要騰訊的審核,整個過程在1-3天,基本上1天左右就能完成,審核通過如下圖所示。

(二) 、封裝微信相關接口

微信移動應用開發文檔:https://developers.weixin.qq.com/doc/oplatform/Mobile_App/WeChat_Login/Authorized_API_call_UnionID.html

審核通過后,就需要來封裝微信授權、可信息獲取的接口。

封裝微信授權 用戶信息獲取

微信授權接口:https://api.weixin.qq.com/sns/oauth2

需要填寫的參數如下:

參數 是否必須 說明
appid 應用唯一標識,在微信開放平臺提交應用審核通過后獲得
secret 應用密鑰 AppSecret,在微信開放平臺提交應用審核通過后獲得
code 填寫第一步獲取的 code 參數
grant_type 填 authorization_code

下面通過我們的PHP代碼實現:

?php
namespace App\Helpers;

use GuzzleHttp\Client;
use Illuminate\Support\Arr;

class WechatAppUtils
{
  protected $client = null;

  protected $config = [];

  public function __construct()
  {
    $this->config = [
      'wechat_app' => [
        'appid' => env('WECHAT_APPID'),  //審核通過的APPID
        'secret' => env('WECHAT_SECRET'),  //應用APP SECRET 詳情見上圖
      ],
      'time_out'  => 5,
    ];
    $this->client = new Client([
      'time_out' => $this->config['time_out'],
    ]);
  }

  /**
   * 獲取微信用戶access_token
   *
   * @param [String] $code
   * @return Array
   */
  public function accessToken($code)
  {
    $accessTokenUrl = 'https://api.weixin.qq.com/sns/oauth2/access_token';

    $response = $this->client->request('GET', $accessTokenUrl, [
      'query' => [
        'grant_type' => 'authorization_code',
        'code'    => $code,
        'appid'   => Arr::get($this->config, 'wechat_app.appid'),
        'secret'   => Arr::get($this->config, 'wechat_app.secret'),
      ],
    ]);

    $result = $response->getbody()->getContents();

    return empty($result) ? null : json_decode($result, true);
  }

  /**
   * 微信用戶信息
   *
   * @param [String] $accessToken
   * @param [String] $openId
   * @return Array
   */
  public function userInfo($accessToken, $openId)
  {
    $userInfoUrl = 'https://api.weixin.qq.com/sns/userinfo';

    $response = $this->client->request('GET', $userInfoUrl, [
      'query' => [
        'access_token' => $accessToken,
        'openid'    => $openId,
        'lang'     => 'zh_CN',
      ],
    ]);

    $result = $response->getbody()->getContents();

    return empty($result) ? null : json_decode($result, true);
  }
}

上面的accessToken方法主要是實現用戶授權,效驗的code參數是客戶端傳遞過來的,當成功獲取收錢用戶的授權信息后,可以根據用戶的OPENID來調用userInfo方法查詢相關用戶的信息,包含了用戶的昵稱、頭像、性別等等。

具體客戶端開發文檔可以參考這篇:https://developers.weixin.qq.com/doc/oplatform/Mobile_App/WeChat_Login/Development_Guide.html。

上面的用到的Http Client是一個第三方拓展包,叫做GuzzleHttp,是一個PHP HTTP客戶端,可以輕松發送HTTP請求,并且可以輕松集成Web服務。

我們可以通過composer一鍵安裝:

composer require guzzlehttp/guzzle

(三)、完善用戶微信授權登錄

完成上述的封裝操作后,我們便開始講微信接入到我們自己的系統中與用戶進行關聯起來,下面是微信接入的一張時序圖。

如果用戶想使用微信登錄,首先會通過客戶端喚起微信,請求登錄第三方應用,然后微信會詢問用戶是否成功授權給XX應用,授權成功后,客戶端會得到一個授權碼:code,然后客戶端攜帶code請求我們的客戶端API,進行授權綁定,授權成功后,會得到授權用戶OPENID(應用下的唯一標識),反之拋出異常信息提示用戶。

建立OAuth表,用于儲存用戶的授權信息。

建立一張o_auths table 儲存用戶的授權信息,設計oauth_type字段使其成為一個多態模型,方便接入以后的微博、支付寶、QQ接入等等。

Schema::create('o_auths', function (Blueprint $table) {
  $table->increments('id');
  $table->unsignedInteger('user_id')->index()->comment('用戶ID');
  $table->morphs('o_auth');
  $table->json('data')->nullable()->comment('授權信息');
  $table->timestamps();
});

完善用戶授權綁定

建立好o_auths table,下面開始完善用戶授權綁定的邏輯:

function wechat(User $user, $code)
{
  $utils = new WechatAppUtils;

  //獲取微信token
  $accessTokens = $utils->accessToken($code);
  throw_if(!Arr::has($accessTokens, ['unionid', 'openid']), Exception::class, '授權失敗,請稍后再試!');

  //建立oauth關聯
  $oAuth = OAuth::firstOrNew(['oauth_type' => 'wechat', 'oauth_id' => $accessTokens['openid']]);
  throw_if(isset($oAuth->id),Exception::class,'該微信已綁定,請直接登錄!');
  $oAuth->user_id = $user->id;
  $oAuth->data  = Arr::only($accessTokens, ['openid', 'refresh_token']);
  $oAuth->save();

  return $oAuth;
}

首先會通過客戶端傳遞過來的Code獲取當前用戶授權,然后查詢該用戶是否已授權過,已授權過就提醒用戶直接去登錄,否則綁定授權信息,返回給客戶端。

完善微信登錄

完善好用戶授權后,登錄就顯得非常容易了,只需要簡單查詢授權記錄,存在則返回對應綁定的用戶,否則拋出異常信息提示用戶。

public function signIn($user, $code)
{
  $utils = new WechatAppUtils;
  //獲取微信token
  $accessTokens = $utils->accessToken($code);
  throw_if(!Arr::has($accessTokens, ['unionid', 'openid']), Exception::class, '授權失敗,請稍后再試!');
  $oauth = $this->getUserOauth($user, 'wechat');
  throw_if(is_null($oauth), UserException::class, '授權失敗,該賬戶未綁定!');

  return $oauth;
}

public function getUserOauth(User $user, $oAuthType)
{
  return OAuth::where(['oauth_type' => $oAuthType, 'user_id' => $user->id])->first();
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • Laravel 微信小程序后端實現用戶登錄的示例代碼
  • laravel5實現微信第三方登錄功能
  • php的laravel框架快速集成微信登錄的方法

標簽:南陽 湛江 宜賓 寶雞 銅川 黃南 婁底 鎮江

巨人網絡通訊聲明:本文標題《Laravel 集成微信用戶登錄和綁定的實現》,本文關鍵詞  Laravel,集成,微信,用戶,登錄,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Laravel 集成微信用戶登錄和綁定的實現》相關的同類信息!
  • 本頁收集關于Laravel 集成微信用戶登錄和綁定的實現的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    欧美性生活大片视频| 久久久激情视频| 久久视频一区二区| 亚洲一二三四在线观看| 国产一二精品视频| 7777精品伊人久久久大香线蕉经典版下载| 久久久精品免费免费| 婷婷综合久久一区二区三区| av不卡一区二区三区| 欧美va亚洲va在线观看蝴蝶网| 亚洲三级久久久| 国产成人高清在线| 欧美成人bangbros| 日韩精品一二三区| 日本国产一区二区| 国产精品欧美一区二区三区| 国产乱子轮精品视频| 欧美一区二区二区| 亚洲成人激情综合网| 色综合中文字幕| 中文字幕亚洲不卡| 成人免费毛片高清视频| 国产丝袜在线精品| 成人动漫视频在线| 久久美女艺术照精彩视频福利播放| 日韩国产成人精品| 欧美高清视频一二三区 | 夜色激情一区二区| 成人精品一区二区三区中文字幕| 久久日韩粉嫩一区二区三区 | 亚洲蜜臀av乱码久久精品| 国产精品18久久久久久久久 | 夜夜嗨av一区二区三区中文字幕 | 国产一区二区三区在线观看免费| 欧美一区二区女人| 麻豆国产精品视频| 日韩精品一区二区三区四区视频| 免费在线观看日韩欧美| 日韩欧美www| 国产精品亚洲一区二区三区在线| 国产欧美一区视频| 国产乱人伦精品一区二区在线观看 | 高清视频一区二区| 国产精品―色哟哟| 一本色道久久加勒比精品| 亚洲日本成人在线观看| 欧美在线色视频| 婷婷中文字幕综合| 欧美精品一区二区不卡| 成人综合婷婷国产精品久久免费| 国产精品免费久久| 91成人在线观看喷潮| 日日噜噜夜夜狠狠视频欧美人 | 亚洲欧洲av另类| 91麻豆成人久久精品二区三区| 亚洲精品视频观看| 日韩一区二区免费高清| 国产乱妇无码大片在线观看| 国产精品理论片| 精品视频一区三区九区| 久久精品国产色蜜蜜麻豆| 国产精品欧美一区二区三区| 欧美午夜精品久久久久久超碰| 久久99精品国产麻豆婷婷洗澡| 国产视频一区二区三区在线观看| 99国产精品久久久久久久久久久| 亚洲成人自拍一区| 久久免费看少妇高潮| 91论坛在线播放| 精品在线亚洲视频| 亚洲日本韩国一区| 日韩欧美在线影院| 91蝌蚪porny| 国内精品久久久久影院一蜜桃| 亚洲欧洲日韩av| 欧美一级片免费看| 99re成人精品视频| 久久成人18免费观看| 亚洲激情六月丁香| 久久影院视频免费| 欧美精品色综合| av一区二区三区四区| 麻豆久久久久久久| 亚洲一区二区精品久久av| 国产清纯白嫩初高生在线观看91 | 麻豆精品蜜桃视频网站| 成人欧美一区二区三区黑人麻豆| 日韩女优制服丝袜电影| 欧美性猛片aaaaaaa做受| 成人av在线一区二区| 极品尤物av久久免费看| 亚洲午夜久久久久久久久久久| 欧美激情一区二区三区不卡| 欧美不卡在线视频| 91精品国产丝袜白色高跟鞋| 91污片在线观看| 国产福利一区在线| 久久激五月天综合精品| 日韩黄色片在线观看| 亚洲最新在线观看| 国产精品伦一区| 中文字幕精品综合| 欧美成人精精品一区二区频| 欧美午夜一区二区三区免费大片| 成人性生交大合| 国产真实乱偷精品视频免| 日韩不卡一区二区三区 | 欧美激情在线一区二区三区| 欧美一区二区三区在线观看 | 亚洲成人午夜影院| 国产精品久久久久三级| 久久日韩精品一区二区五区| 日韩欧美国产一区二区三区| 91精品国产91久久综合桃花| 欧美精品1区2区3区| 4438x成人网最大色成网站| 欧美日韩国产片| 欧美日韩成人综合天天影院 | 欧美三片在线视频观看| 欧美在线不卡一区| 欧美日韩视频在线观看一区二区三区| 91色九色蝌蚪| 欧美自拍丝袜亚洲| 欧美日本在线看| 欧美一区日韩一区| 日韩欧美国产午夜精品| 久久久精品国产免大香伊| 欧美激情一区二区三区在线| 中文字幕亚洲欧美在线不卡| 亚洲蜜桃精久久久久久久| 天天综合天天综合色| 国产最新精品免费| 岛国一区二区三区| 色综合欧美在线| 欧美日韩一本到| 日韩欧美成人午夜| 国产精品欧美综合在线| 亚洲欧美欧美一区二区三区| 婷婷夜色潮精品综合在线| 久久国产精品色| 成人av免费在线播放| 日本精品裸体写真集在线观看| 欧美日韩国产小视频在线观看| 日韩美女在线视频| 国产精品高潮呻吟久久| 亚洲伊人伊色伊影伊综合网| 美女久久久精品| 99精品视频一区二区| 欧美日本一区二区三区| 精品美女被调教视频大全网站| 国产精品久久综合| 亚洲va欧美va人人爽| 国产麻豆精品在线观看| 日本道免费精品一区二区三区| 日韩视频在线永久播放| 国产精品国产馆在线真实露脸| 免费高清成人在线| 成人免费视频国产在线观看| 欧美福利视频导航| 中文字幕一区二区三| 久久av资源网| 欧美性做爰猛烈叫床潮| 国产精品美女久久久久aⅴ| 婷婷丁香久久五月婷婷| 成人高清在线视频| 日韩一区和二区| 樱桃视频在线观看一区| 国产精品自拍三区| 制服丝袜亚洲色图| 亚洲精品日韩专区silk | 欧美aaaaaa午夜精品| 波多野结衣在线aⅴ中文字幕不卡| 欧美久久一区二区| 亚洲丝袜精品丝袜在线| 国产成人夜色高潮福利影视| 91精品国产欧美日韩| 一区二区三区波多野结衣在线观看 | 99r精品视频| 久久美女高清视频| 男人操女人的视频在线观看欧美| 99国产一区二区三精品乱码| 久久精品人人做人人综合| 蜜芽一区二区三区| 欧美四级电影网| 亚洲欧洲精品成人久久奇米网| 国产乱码精品1区2区3区| 日韩午夜电影在线观看| 午夜a成v人精品| 欧美性色欧美a在线播放| 亚洲精品欧美专区| 色婷婷综合激情| 亚洲精品一二三| 一本色道久久综合亚洲91| 中文字幕中文字幕一区| 粉嫩一区二区三区在线看| 国产亚洲成av人在线观看导航| 久久99精品国产.久久久久| 日韩亚洲欧美在线| 麻豆精品视频在线观看免费| 日韩欧美国产三级电影视频|