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('get.code'); if (empty($code)) { //todo 非微信访问 exit('</code>'); }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 = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . C('wechat.AppID') . '&secret=' . C('wechat.AppSecret'); $str = file_get_contents($url); $str = json_decode($str, true); $access_token = $str['access_token'];</code>
access_token は、頻繁な取得を避けるためにここにキャッシュできます
実装コード、 TP フレームワークの例:
<code class="hljs php">$access_token = S('access_token'); if (empty($access_token)) { $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . C('wechat.AppID') . '&secret=' . C('wechat.AppSecret'); $str = file_get_contents($url); $str = json_decode($str, true); $access_token = $str['access_token']; S('access_token', $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('access_token'); if (empty($access_token)) { $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . C('wechat.AppID') . '&secret=' . C('wechat.AppSecret'); $str = file_get_contents($url); $str = json_decode($str, true); $access_token = $str['access_token']; S('access_token', $access_token, 3600); }</code>
上記は、WeChat 公開アカウントがユーザー情報を取得するための具体的な手順です。