ホームページ  >  記事  >  WeChat アプレット  >  WeChat認証ログインとユーザー情報取得インターフェース

WeChat認証ログインとユーザー情報取得インターフェース

高洛峰
高洛峰オリジナル
2017-03-01 09:19:1810893ブラウズ

最近WeChatインターフェースの開発に取り組んでいるので、WeChatでのログインを認証してユーザー情報を取得するこのインターフェースの開発プロセスをまとめます。

1. まず、WeChat 公式アカウントは、対応する AppID と AppSecret を取得する必要があります。WeChat ログインを申請し、審査に合格した場合にのみ、アクセス プロセスを開始できます。

2. 認証プロセス

1. プロセスの説明

(1). WeChat ユーザーがサードパーティ アプリケーションの認証を許可すると、WeChat はアプリケーションを起動するか、次の URL にリダイレクトします。サードパーティの Web サイトに認証一時チケット コード パラメーターを追加し、API を通じて access_token を交換します。 access_token を通じてユーザーの基本的なデータ リソースを取得したり、ユーザーが基本的な操作を実行できるように支援します。

2. access_token シーケンス図を取得します:

3. 開発 (私は CI フレームワークを使用します。実際には、どのフレームワークでも同じです。MVC モードでも可能です) 1. CODE をリクエストします

weixin.php

<?php
    class weixinController extends CI_Controller {
        public $userInfo;
        public $wxId;


        public function __construct(){
            parent::__construct();

            //只要用户一访问此模块,就登录授权,获取用户信息
            $this->userInfo = $this->getWxUserInfo();
        }
    

        /**
         * 确保当前用户是在微信中打开,并且获取用户信息
         *
         * @param string $url 获取到微信授权临时票据(code)回调页面的URL
         */
        private function getWxUserInfo($url = &#39;&#39;) {
            //微信标记(自己创建的)
            $wxSign = $this->input->cookie(&#39;wxSign&#39;);
            //先看看本地cookie里是否存在微信唯一标记,
            //假如存在,可以通过$wxSign到redis里取出微信个人信息(因为在第一次取到微信个人信息,我会将其保存一份到redis服务器里缓存着)
            if (!empty($wxSign)) {
                //如果存在,则从Redis里取出缓存了的数据
                $userInfo = $this->model->redisCache->getData("weixin:sign_{$wxSign}");
                if (!empty($userInfo)) {
                    //获取用户的openid
                    $this->wxId = $userInfo[&#39;openid&#39;];
                    //将其存在cookie里
                    $this->input->set_cookie(&#39;wxId&#39;, $this->wxId, 60*60*24*7);
                    return $userInfo;
                }
            }

            //获取授权临时票据(code)
            $code = $_GET[&#39;code&#39;];
            if (empty($code)) {
                if (empty($url)) {
                    $url = rtirm($_SERVER[&#39;QUERY_STRING&#39;], &#39;/&#39;);
                    //到WxModel.php里获取到微信授权请求URL,然后redirect请求url
                    redirect($this->model->wx->getOAuthUrl(baseUrl($url)));
                }
            }


        }

    }
?>

WeChat認証ログインとユーザー情報取得インターフェースcodeのControllerコードを取得

Wxmodel.php

<?php
    class WxModel extends ModelBase{
        public $appId;
        public $appSecret;
        public $token;

        public function __construct() {
            parent::__construct();

            //审核通过的移动应用所给的AppID和AppSecret
            $this->appId = &#39;wx0000000000000000&#39;;
            $this->appSecret = &#39;00000000000000000000000000000&#39;;
            $this->token = &#39;00000000&#39;;
        }

        /**
         * 获取微信授权url
         * @param string 授权后跳转的URL
         * @param bool 是否只获取openid,true时,不会弹出授权页面,但只能获取用户的openid,而false时,弹出授权页面,可以通过openid获取用户信息
         *   
        */
       public function getOAuthUrl($redirectUrl, $openIdOnly, $state = &#39;&#39;) {
        $redirectUrl = urlencode($redirectUrl);
        $scope = $openIdOnly ? &#39;snsapi_base&#39; : &#39;snsapi_userinfo&#39;;
        $oAuthUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid={$this->appId}&redirect_uri={$redirectUrl}&response_type=code&scope=$scope&state=$state";
        return $oAuthUrl;
       }

获取code的Model代码

codeのModelコードを取得

リクエストパラメータの説明と戻り値の説明を添付します

リクエストパラメータの説明:

レスポンス戻り値説明:

WeChat認証ログインとユーザー情報取得インターフェース

リクエストが成功するとリクエストパラメータのredirect_uriの値にリダイレクトされ、実際には$this->userInfo =に戻ります。 weixin.php の $this-> getWxUserInfo(); 行に移動し、再度 getWxUserInfo() メソッドを入力します。このとき、

WeChat認証ログインとユーザー情報取得インターフェース 行でもコードの値を取得できます。 。次に、2 番目のステップに進みます。

2。

リクエストパラメータの説明:

レスポンス戻り値の説明:

エラーが返された場合は次のようになります:

3. インターフェースを呼び出します(ユーザー情報を取得します) ) access_token を介して取得 access_token の後、次の前提条件がインターフェース呼び出しに適用されます:

(1) access_tokec が有効でタイムアウトになっていない

(2) WeChat ユーザーがサードパーティの対応するインターフェース スコープ (スコープ) を承認している。アプリケーションアカウント。

ユーザー情報を取得するためのコードは、ユーザー情報を取得するためのweixin.php

rreeeWeChat認証ログインとユーザー情報取得インターフェース

controllerwxmodel.php

rreee

modelユーザー情報を取得する

            //获取授权临时票据(code)
            $code = $_GET[&#39;code&#39;];

ユーザー情報を取得するカスタム関数WeChat認証ログインとユーザー情報取得インターフェース

上記の3ステップでインターフェースを呼び出すことで、ユーザーのWeChatアカウント情報を取得できます。 WeChat認証ログインとユーザー情報取得インターフェース

コードの多くの箇所にコメントを付けているので、よく見てください。学びたいと思っているお友達はぜひじっくりと見てみてください。

WeChat の認証ログインとユーザー情報インターフェイスへのアクセスに関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

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