ホームページ WeChat アプレット WeChatの開発 WeChatパブリックアカウントWeb認証の詳しい説明

WeChatパブリックアカウントWeb認証の詳しい説明

Jul 16, 2019 pm 02:21 PM
微信 WeChatの公開アカウント

モバイル端末の時代において、WeChat 公式アカウントは徐々に人々が情報を入手するチャネルとなり、販売者にとっては潜在顧客を開拓する手段となりました。そのため、多くのプログラマーが WeChat 開発に目を向け、今日、私たちはここにいます。 WeChat パブリック アカウントの開発で Web ページ認証を実装する方法を紹介します。

#カスタム リクエスト インターフェイス関数を紹介する前に、この関数は次のサンプル コードのリクエスト インターフェイスで使用されています

この関数の機能は次のとおりです。インターフェイスへのリクエストを開始するには、パラメーターを渡し、インターフェイスによって返されたデータを返します。

(この内部のコードについては詳しく説明しません。さらに詳しく知りたい場合は、 phpカール関数の概要をご覧ください)

//自定义请求接口函数,$data为空时发起get请求,$data有值时发情post请求
function http_url($url,$data=null){
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
    curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
    if(!empty($data)){
        curl_setopt($ch,CURLOPT_POST,1);
        curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
    }
    $res = curl_exec($ch);
    if(curl_errno($ch)){
        echo "error:".curl_error($ch);
        exit;
    }
    curl_close($ch);
    return $res;
}
ログイン後にコピー

(この記事で使用されているインターフェイスはTencentによって公式に提供されています。WeChatパブリックプラットフォームを参照できます) 開発者ドキュメント#)

#1. まず、公式アカウントを設定する必要があります1. WeChat 公式アカウントがユーザー Web ページの認証をリクエストする前に、開発者はパブリック プラットフォームの公式 Web サイトにアクセスして基本的なユーザー情報を取得する必要があります

" 設定オプション、認証コールバック ドメインを変更する名前。ここに入力されるドメイン名 (文字列) は URL ではないことに注意してください。したがって、

http:// およびその他のプロトコル ヘッダーを追加しないでください; 2. 認可コールバック ドメイン名構成仕様 これは完全なドメイン名です。たとえば、Web ページの認証が必要なドメイン名は www.qq.com です。構成後、このドメイン名のページは http://www.qq.com/music になります。 html および http://www.qq.com/login. .html は OAuth2.0 で認証できます。ただし、http://pay.qq.com、http://music.qq.com、http://qq.com では OAuth2.0 認証を行うことができません

3. 公式アカウントのログインが許可されている場合サードパーティの開発者が管理する場合は、特に設定を行う必要はなく、公式アカウントに代わってサードパーティがWebページの認証を実装することができます。認可を取得してコードを取得します

インターフェイス アドレス:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope= SCOPE&state=STATE#wechat_redirect (インターフェースパラメータに注意してください)

function Get_Code()  //获取code
{
//构造请求地址
$code_url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=微信公众号appid&redirect_uri=请求功后回调地址&response_type=code&scope=snsapi_userinfo&state=STATE #wechat_redirect";
//跳转到请求地址,应为本省设置了回调地址,所以不需要使用file_get_content()来请求接口。
header("location:" . $code_url);
exit;
}
ログイン後にコピー

3. 取得されたコードには、access_token と openid

# が含まれる場合があります。

WeChatパブリックアカウントWeb認証の詳しい説明

##インターフェース: https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

/**
 *  通过获取到的code来获取access_token和openid 
 *  $code为获取到的code
 * 接口的参数注意换成自己的,如appid和secret
 */
function GetAccess_Token($code)
{
$get_access_token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=appid&secret=secret&code=$code&grant_type=authorization_code";
$res = http_url($get_access_token_url);
return json_decode($res, true);
}
ログイン後にコピー

4. access_token が有効かどうかを確認します


WeChatパブリックアカウントWeb認証の詳しい説明##インターフェース:

https://api.weixin.qq.com/sns/auth ?access_token=ACCESS_TOKEN&openid=OPENID

/**
 * 检查access_token是否有效
 * 
 */
function CkeckAccessToken($access_token, $openid)
{
    $check_url = "https://api.weixin.qq.com/sns/auth?access_token=$access_token&openid=$openid";
    $res = http_url($check_url);
    $result = json_decode($res, true);
    if (isset($result['errmsg']) && $result['errmsg'] == 1) {
        return 1;       //access_token有效   
    } else {
        return 0;       //access_token无效 
    }
}
ログイン後にコピー

5. 失敗した場合は、access_token## を更新します。

##インターフェイス:

https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKENWeChatパブリックアカウントWeb認証の詳しい説明

/**
 * 如果获取到的access_token无效,通过refresh_token来刷新access_token
 *接口的参数注意换成自己的
 */
function GetRefresh_Token($refresh_token)
{
$get_refresh_token_url = "https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=appid&grant_type=refresh_token&refresh_token=$refresh_token";
$res = http_url($get_refresh_token_url);
return json_decode($res, true);
}
ログイン後にコピー

6. ユーザー情報の取得

Interface:

https://api.weixin.qq.com/sns/userinfo?access_token= ACCESS_TOKEN&openid=OPENID&lang=zh_CN

WeChatパブリックアカウントWeb認証の詳しい説明

WeChatパブリックアカウントWeb認証の詳しい説明

/** * 获取用户基本信息 *  */
function Get_User_Info($access_token, $openid){   
     $get_user_info = "https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openid&lang=zh_CN";   
      $res = http_url($get_user_info);   
       return json_decode($res, true);
   }
ログイン後にコピー

获取到用户信息数据:

{   
    "openid":" OPENID",
    " nickname": NICKNAME,
    "sex":"1",
    "province":"PROVINCE"
    "city":"CITY",
    "country":"COUNTRY",
    "headimgurl":       "http://thirdwx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/46",
    "privilege":[ "PRIVILEGE1" "PRIVILEGE2"     ],
    "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
}
ログイン後にコピー

WeChatパブリックアカウントWeb認証の詳しい説明下面上完整代码:

<?php
    //跳转第三方页面,获取用户基本信息
    // 这是请求页面也是code的回调页面
    session_start();                //启动session
    if (isset($_GET[&#39;code&#39;])) {     //判断是否有code传过来,如果没有调用函数请求code
          $res = GetAccess_Token($_GET[&#39;code&#39;]);     //使用code获取access_token和openid
          if (CkeckAccessToken($res[&#39;access_token&#39;], $res[&#39;openid&#39;]) == 0) {     //判断access_token是否有效,如果无效获取新的access_token
                  $res = GetRefresh_Token($res[&#39;refresh_token&#39;]);                    //或缺新的access_token
            }
           $userinfo = Get_User_Info($res[&#39;access_token&#39;], $res[&#39;openid&#39;]);        //获取用户信息
           $_SESSION[&#39;userinfo&#39;] = $userinfo;                                      //将用户信息存入session中
           $next_url = &#39;http://web/index.php&#39;;                                     //下一个页面地址
           header("location:" . $next_url);                                       //获取到信息后跳转到其他页面
           exit;
      } else { 
         //获取code
      Get_Code();
      }
    function Get_Code()  //获取code{
    $code_url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=appid&redirect_uri=回调地址&response_type=code&scope=snsapi_userinfo&state=STATE #wechat_redirect";
    header("location:" . $code_url);
    exit;
    }
    /**
    *  通过获取到的code来获取access_token和openid
    *
    */
    function GetAccess_Token($code){
        $get_access_token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=appid&secret=secret&code=$code&grant_type=authorization_code";
        $res = http_url($get_access_token_url);
        return json_decode($res, true);
        }
    /**
     * 检查access_token是否有效
     *
    */
    function CkeckAccessToken($access_token, $openid){
    $check_url = "https://api.weixin.qq.com/sns/auth?access_token=$access_token&openid=$openid"; 
    $res = http_url($check_url);
    $result = json_decode($res, true);
    if (isset($result[&#39;errmsg&#39;]) && $result[&#39;errmsg&#39;] == 1) {
       return 1;       //access_token有效 
     } else { 
       return 0;       //access_token无效 
     }
    }

    /**
     * 如果获取到的access_token无效,通过refresh_token来刷新access_token 
     */
    function GetRefresh_Token($refresh_token){
        $get_refresh_token_url = "https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=appid&grant_type=refresh_token&refresh_token=$refresh_token";
        $res = http_url($get_refresh_token_url);
        return json_decode($res, true);
     }
    /**
     * 获取用户基本信息
     *
     */
    function Get_User_Info($access_token, $openid){
        $get_user_info = "https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openid&lang=zh_CN";
        $res = http_url($get_user_info);
        return json_decode($res, true);}
    //自定义请求接口函数,$data为空时发起get请求,$data有值时发起post请求
    function http_url($url,$data=null){
       $ch = curl_init();
        curl_setopt($ch,CURLOPT_URL,$url);
        curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
        curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0);
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
        if(!empty($data)){    
            curl_setopt($ch,CURLOPT_POST,1);
            curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
         }
         $res = curl_exec($ch);
         if(curl_errno($ch)){
           echo "error:".curl_error($ch);
           exit;
          }
          curl_close($ch);
          return $res;
          }
ログイン後にコピー


   

以上がWeChatパブリックアカウントWeb認証の詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

会社のセキュリティソフトウェアはアプリケーションの実行に失敗していますか?それをトラブルシューティングと解決する方法は? 会社のセキュリティソフトウェアはアプリケーションの実行に失敗していますか?それをトラブルシューティングと解決する方法は? Apr 19, 2025 pm 04:51 PM

一部のアプリケーションが適切に機能しないようにする会社のセキュリティソフトウェアのトラブルシューティングとソリューション。多くの企業は、内部ネットワークセキュリティを確保するためにセキュリティソフトウェアを展開します。 ...

H5ページの生産とWeChatアプレットの違いは何ですか H5ページの生産とWeChatアプレットの違いは何ですか Apr 05, 2025 pm 11:51 PM

H5はより柔軟でカスタマイズ可能ですが、熟練したテクノロジーが必要です。ミニプログラムはすぐに開始でき、メンテナンスが簡単ですが、WeChatフレームワークによって制限されています。

H5とミニプログラムとアプリの違い H5とミニプログラムとアプリの違い Apr 06, 2025 am 10:42 AM

H5。ミニプログラムとアプリの主な違いは次のとおりです。技術アーキテクチャ:H5はWebテクノロジーに基づいており、ミニプログラムとアプリは独立したアプリケーションです。経験と機能:H5は軽量で使いやすく、機能が限られています。ミニプログラムは軽量で、インタラクティブが良好です。アプリは強力で、スムーズな経験があります。互換性:H5はクロスプラットフォーム互換性があり、アプレットとアプリはプラットフォームによって制限されています。開発コスト:H5には、開発コストが低く、中程度のミニプログラム、最高のアプリがあります。適用可能なシナリオ:H5は情報表示に適しており、アプレットは軽量アプリケーションに適しており、アプリは複雑な機能に適しています。

Enterprise WechatでのJSリソースキャッシュの問題を解決する方法は? Enterprise WechatでのJSリソースキャッシュの問題を解決する方法は? Apr 04, 2025 pm 05:06 PM

Enterprise WechatのJSリソースキャッシュ問題に関する議論。プロジェクト機能をアップグレードするとき、一部のユーザーは、特にエンタープライズでうまくアップグレードできない状況に遭遇することがよくあります...

会社のセキュリティソフトウェアがアプリケーションと競合する場合はどうすればよいですか? HUESセキュリティソフトウェアをトラブルシューティングする方法は、一般的なソフトウェアを開きませんか? 会社のセキュリティソフトウェアがアプリケーションと競合する場合はどうすればよいですか? HUESセキュリティソフトウェアをトラブルシューティングする方法は、一般的なソフトウェアを開きませんか? Apr 01, 2025 pm 10:48 PM

互換性の問題と企業のセキュリティソフトウェアとアプリケーションのトラブルシューティング方法。多くの企業は、イントラネットセキュリティを確保するためにセキュリティソフトウェアをインストールします。ただし、セキュリティソフトウェアが時々...

OUYI Exchange App国内ダウンロードチュートリアル OUYI Exchange App国内ダウンロードチュートリアル Mar 21, 2025 pm 05:42 PM

この記事では、中国のOUYI OKXアプリの安全なダウンロードに関する詳細なガイドを提供します。国内のアプリストアの制限により、ユーザーはOUYI OKXの公式Webサイトからアプリをダウンロードするか、公式Webサイトが提供するQRコードを使用してスキャンおよびダウンロードすることをお勧めします。ダウンロードプロセス中に、公式Webサイトのアドレスを確認し、アプリケーションの許可を確認し、インストール後にセキュリティスキャンを実行し、2要素の検証を有効にしてください。 使用中は、地方の法律や規制を遵守し、安全なネットワーク環境を使用し、アカウントのセキュリティを保護し、詐欺に対して警戒し、合理的に投資してください。 この記事は参照のみであり、投資のアドバイスを構成していません。

H5およびMINIプログラムの開発ツールは何ですか? H5およびMINIプログラムの開発ツールは何ですか? Apr 06, 2025 am 09:54 AM

H5開発ツールの推奨事項:VSCODE、WebStorm、Atom、Brackets、Sublime Text;ミニプログラム開発ツール:WeChat開発者ツール、Alipay Mini Program Developer Tools、Baidu Smart MiniプログラムIDE、Toutiao Mini Program Developer Tools、Taro。

Binance Virtual Currencyの売買方法に関する詳細なチュートリアル Binance Virtual Currencyの売買方法に関する詳細なチュートリアル Mar 18, 2025 pm 01:36 PM

この記事では、2025年に更新されたBinance Virtual Currencyの売買に関する簡単なガイドを提供し、Binanceプラットフォームでの仮想通貨取引の操作手順を詳細に説明します。このガイドは、フィアット通貨購入USDT、他の通貨の通貨取引購入(BTCなど)、および市場取引や制限取引を含む販売業務をカバーしています。 さらに、このガイドは、Fiat Currency取引の支払いセキュリティやネットワーク選択などの重要なリスクを特に思い出させ、ユーザーが安全かつ効率的にバイナンストランザクションを実施するのに役立ちます。 この記事を通して、Binanceプラットフォームで仮想通貨を売買するスキルをすばやく習得し、トランザクションリスクを減らすことができます。

See all articles