WeChatパブリックアカウントのユーザー情報取得(Webページ認可取得)実施手順

伊谢尔伦
リリース: 2016-11-21 15:49:39
オリジナル
3064 人が閲覧しました

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

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

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

1 コードを取得します

WeChat パブリック アカウントに承認スコープがあることを確認するという前提の下 (スコープパラメータ) (高度なインターフェイスの後にサービスアカウントが取得され、デフォルトでスコープパラメータに snsapi_base と snsapi_userinfo が含まれます)、フォロワーに次のページを開くように誘導します:

https://open.weixin.qq.com/ connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope =SCOPE&state=STATE#wechat_redirect

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

特記事項: 承認操作のセキュリティ レベルが高いため、承認リクエストを開始するとき、リンクのパラメーターの順序が間違っている場合、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 を取得します:

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

appid -公式アカウントの唯一の ID
secret - キー
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 を直接取得し、セッションを設定し、直接ログインしてアクセスします

3 3 番目の手順は無視して、再取得するだけです。必要なときに access_token を取得します

4 ユーザー情報を取得します (スコープ snsapi_userinfo が必要です)

データベースにそのような WeChat アカウントはありません ユーザーがバインドされた後は、ユーザーの最初の訪問とログインと同等になります。ユーザー情報は 4 番目の手順で取得され (ユーザー認証の場合、Web ページの認証スコープは snsapi_userinfo であり、開発者はこの時点の情報である access_token と openid を通じてユーザーを取得できます)、バックグラウンドでユーザーを作成してバインドします。この WeChat ユーザー (openid 経由)


リクエストメソッド


http: GET (https プロトコルを使用してください) https://api.weixin.qq.com/ sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

access_token - 上記で取得した access_token

openid - 公開アカウントの一意の識別子



実装コード:

<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>
ログイン後にコピー
ログイン後にコピー

上記は、WeChat 公開アカウントがユーザー情報を取得するための具体的な手順です。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート