ホームページ >WeChat アプレット >WeChatの開発 >WeChat 公開アカウントの Web ページ認証を取得するための実装手順

WeChat 公開アカウントの Web ページ認証を取得するための実装手順

PHPz
PHPzオリジナル
2017-04-02 16:08:222746ブラウズ

WeChat 公開アカウントに基づいて公式ドキュメントを作成します:

ユーザー情報を取得する手順は次のとおりです:

1 ステップ 1: ユーザーはコードを認証して取得することに同意します
2 ステップ 2: Web ページ認証用のコードを交換します。 access_token
3 ステップ 3: access_token を更新する (必要な場合)
4 ステップ 4: ユーザー情報を取得する (スコープは snsapi_userinfo である必要があります)

1 コードを取得します

WeChat パブリック アカウントに承認スコープがあることを確認するという前提の下 (スコープパラメータ) (サービスアカウントが取得されます。高度な interface の後、デフォルトでスコープパラメータに snsapi_base と snsapi_userinfo が含まれます) ).

「リンクにアクセスできません」というメッセージが表示される場合は、パラメーターが正しく入力されているかどうか、およびスコープ パラメーターに対応する承認スコープの権限があるかどうかを確認してください。

特記事項: セキュリティ レベルが高いため。承認操作の際、承認リクエストを開始するときに、WeChat は承認リンクに対して定期的な強力な一致チェックを実行し、リンクのパラメーターが間違った順序である場合、承認ページにアクセスできないことを確認します

:

AppID - 公式アカウントの一意の識別子
REDIRECT_URI - ジャンプ URL
SCOPE - 値は snsapi_base (認証ページはポップアップせず、直接ジャンプし、ユーザーの openid のみを取得できます) または snsapi_userinfo (認証ページ)というメッセージが表示され、openid を通じてニックネーム、性別、所在地が取得できます。また、ユーザーがフォローしていなくても、ユーザーが許可すれば情報を取得できます)
STATE - 開発者 をカスタマイズできます。 a-zA-Z0-9

2のパラメータ値を取得し、Webページ認可のコードを交換しますaccess_token

ユーザーが認可に同意すると、ページはredirect_uri/?code=CODE&state=STATEにジャンプします
stateはSTATEです上記のパラメータはそのまま渡されます

実装コード:

<code class="hljs php">$code = I(&#39;get.code&#39;);
if (empty($code)) {
   //todo 非微信访问
   exit(&#39;</code>&#39;);
 }else{ //授权后操作 }

ここで、access_token を取得するためのコードを取得できます。コードを取得した後、次のリンクをリクエストして access_token を取得します。公式アカウントの一意の識別子

Secret - key

code - 上記で返されるコード

grant_type - 値は authorization_code です


実装コード:

<code class="hljs bash">$url = &#39;https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=&#39; . C(&#39;wechat.AppID&#39;) . &#39;&secret=&#39; . C(&#39;wechat.AppSecret&#39;);
$str = file_get_contents($url);
$str = json_decode($str, true);
$access_token = $str[&#39;access_token&#39;];</code>

ここで access_token を処理できます

キャッシュ

頻繁な取得を避けるために

実装コードを取得します例として TP フレームワーク:

<code class="hljs php">$access_token = S(&#39;access_token&#39;);
if (empty($access_token)) {
  $url = &#39;https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=&#39; . C(&#39;wechat.AppID&#39;) . &#39;&secret=&#39; . C(&#39;wechat.AppSecret&#39;);
  $str = file_get_contents($url);
  $str = json_decode($str, true);
  $access_token = $str[&#39;access_token&#39;];
  S(&#39;access_token&#39;, $access_token, 3600);
}</code>
access_token を取得した後、openid (ユーザーの一意の識別子) も返します。 ユーザーが公式アカウントをフォローしていない場合は、WeChat の公式ドキュメントで説明されています。 、公式アカウントの Web ページにアクセスすると、ユーザーに一意の OpenID も生成され、公式アカウント

openid は WeChat ユーザーを一意に識別します。ユーザーが初めてログインしていない場合は、データベースを取得した後にデータベースに

クエリ
することができます。 openid を使用して、この openid にバインドされているユーザーが存在するかどうかを確認します。後でユーザー データを再取得する必要はありません。データベースの user_id 設定

session

を直接取得し、直接ログインしてアクセスします 3 3 番目の手順は無視します。 、必要な場合にのみ access_token を再取得します 4 データベース内のユーザー情報を取得します (スコープ snsapi_userinfo が必要です)

この WeChat ID ユーザー バインディングがなければ、ユーザーの最初の訪問とログインと同等になり、ユーザー情報は4 番目の手順で取得した情報 (ユーザー認証の場合、Web ページの認証スコープは snsapi_userinfo であり、開発者は access_token を渡すことができ、openid がユーザー情報を取得します)、バックグラウンドでユーザーを作成し、(openid を介して) この WeChat ユーザーをバインドします。

リクエストメソッド


http: GET(httpsプロトコルを使用してください)

access_token - 上記取得したaccess_tokenopenid - 公式アカウントの一意の識別子

<code class="hljs php">$url="https://api.weixin.qq.com/cgi-bin/user/info?access_token=$access_token&openid=$openid&lang=zh_CN";
   $str = file_get_contents($url);
   $str = json_decode($str, true);
   if (empty($str[&#39;errcode&#39;])) {  
   //创建user并绑定
   openid}else{  
   //错误处理}</code>

以上がWeChat 公開アカウントの Web ページ認証を取得するための実装手順の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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