ホームページ  >  記事  >  バックエンド開発  >  ワンクリックログインを実装してユーザー情報を取得するための PHP WeChat サードパーティメソッド (詳細な例)

ワンクリックログインを実装してユーザー情報を取得するための PHP WeChat サードパーティメソッド (詳細な例)

墨辰丷
墨辰丷オリジナル
2018-06-01 09:36:101281ブラウズ

この記事では、ワンクリックログインを実現し、ユーザー情報を取得するためのPHPバージョンのWeChatサードパーティ方法を主に紹介し、WeChatサードパーティログインの関連注意事項と実装スキルをより詳しく分析します。必要な友人はそれを参照してください。

注意、WeChatを使用してサードパーティのWebページにログインするには、「サービスアカウント」が必要なので、公式Webサイトから申請する必要があります。

最初に、WeChat パブリック プラットフォームに入って開発モードを開き、oauth2 のコールバック アドレスを入力する必要があります。たとえば、www.baidu.com または zhidao です。 .baidu.com の場合、プロジェクトの第 2 レベル ドメイン名に、第 2 レベル ドメイン名

のフロントエンド URL 認証アドレスを入力し、URL 内のプロジェクトのメソッドに appid と oauth アドレスを入力します。詳細は以下のコードで確認できます

コードをコピー コードは次のとおりです:

5c5e12da9166f0c72af3a3bb54ba3245承認5db79b134e9f6b82c0b36e0489ee08ed

バックグラウンド ロジックについて話しましょう。まず、WeChat インターフェイスの SDK を呼び出します。 (後ほど)

include('./Card/Common/class_weixin_adv.php');

次に、WeChat公式から与えられたappidとシークレットを入力します

$weixin=new class_weixin_adv("appid", "secret");

SDKクラスを初期化し、コードを取得し、取得したコードを使用してopenidを取得します。コードのコメントは以下の通りです!

$url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=appid&secret=secret&code=".$_GET['code']."&grant_type=authorization_code";
$res = $weixin->https_request($url);//调用SDK方法获取到res 从中可以得到openid
$res=(json_decode($res, true));//转换成array 方便调用openid

引き続き SDK メソッドを呼び出してユーザー情報を取得します。この時点で、var_dump を使用してキーの値を確認し、簡単に保存できます。データベース

$row=$weixin->get_user_info($res['openid']);

ユーザー情報は取得されますが、これだけでは十分ではありません。したがって、各ユーザーが持つ唯一の認証情報が必要です。これは、ユーザー アカウントの感覚として理解できます。ここで使用する解決策は、ユーザーのログインの感覚と同様に、必要なキー データの検証だけです。他の利用方法はあなたの想像力を働かせることができます! メッセージを残して連絡することもできます。これにより、権限のないユーザーがアドレスに直接ジャンプできるようになり、ユーザーは 1 ステップの操作を節約できます。

public function oauth2(){
 include('./Card/Common/class_weixin_adv.php');
  $weixin=new class_weixin_adv("appid", "secret");
  if (isset($_GET['code'])){
    $url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=appid&secret=secret&code=".$_GET['code']."&grant_type=authorization_code";
    $res = $weixin->https_request($url);
    $res=(json_decode($res, true));
    $row=$weixin->get_user_info($res['openid']);
    if ($row['openid']) {
      //这里写上逻辑,存入cookie,数据库等操作
      cookie('weixin',$row['openid'],25920);
    }else{
      $this->error('授权出错,请重新授权!');
    }
  }else{
    echo "NO CODE";
  }
  $this->display();
}

SDK コード: WeChat 公式マニュアルを参照してください。詳細には触れません、私自身 研究はとても簡単です!

<?php
/**
 * 微信SDK
 * pan041ymail@gmail.com
 */
class class_weixin_adv
{
  var $appid = "";
  var $appsecret = "";
  //构造函数,获取Access Token
  public function __construct($appid = NULL, $appsecret = NULL)
  {
    if($appid){
      $this->appid = $appid;
    }
    if($appsecret){
      $this->appsecret = $appsecret;
    }
    $this->lasttime = 1395049256;
    $this->access_token = "nRZvVpDU7LxcSi7GnG2LrUcmKbAECzRf0NyDBwKlng4nMPf88d34pkzdNcvhqm4clidLGAS18cN1RTSK60p49zIZY4aO13sF-eqsCs0xjlbad-lKVskk8T7gALQ5dIrgXbQQ_TAesSasjJ210vIqTQ";
    if (time() > ($this->lasttime + 7200)){
      $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$this->appid."&secret=".$this->appsecret;
      $res = $this->https_request($url);
      $result = json_decode($res, true);
      $this->access_token = $result["access_token"];
      $this->lasttime = time();
    }
  }
//获取用户基本信息
  public function get_user_info($openid)
  {
    $url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=".$this->access_token."&openid=".$openid."&lang=zh_CN";
    $res = $this->https_request($url);
    return json_decode($res, true);
  }
//https请求
  public 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;
  }
}

概要: 上記がこの記事の全内容です。皆さんの学習に役立つことを願っています。

関連する推奨事項:

php

mysqlデータを挿入してIDを返す方法


php

中国語と英語の混合文字列をインターセプトする方法

ThinkPHP5バリデータの具体的な使用方法

JSON PHP で、Json 文字列をオブジェクト/配列に逆シリアル化する方法


以上がワンクリックログインを実装してユーザー情報を取得するための PHP WeChat サードパーティメソッド (詳細な例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。