ホームページ  >  記事  >  バックエンド開発  >  WeChat oauth2 access_token の問題

WeChat oauth2 access_token の問題

WBOY
WBOYオリジナル
2016-06-23 13:43:201340ブラウズ

WeChat oauth2 を介してユーザー情報を取得するプロセス全体が完了しました。こちらも問題ありません。 。

しかし、途中で不明瞭な点があります。知っている人がこの質問に答えてくれることを願っています。 。

毎回コードを通じて access_token を取得する必要がありますか?
そうでない場合、ユーザーの openid は、access_token を取得するときにのみ返されます。それ以外の場合、ユーザーの openid は取得されません。
それとも、初めてユーザーの openid を取得した後、それを cookie に保存し、次回その cookie を読み取りますか? ? ?
それ以外の場合、access_token を更新する意味は何でしょうか? 。 。

もう 1 つの疑問は、取得された access_token が現在のセッションに対してのみ有効なのか、特定のユーザー openid に対して有効なのか、それともすべてのユーザーに対して有効なのかということです。 。 。

WeChat に初めて連絡しました。ありがとうございます。 。 。 。 。


ディスカッション(解決策)への返信

これは、WeChat 上で管理機能を操作する必要がある場合にのみ使用されます。通常、一般的なチャットの管理バックエンドのみが存在します。 WeChat プラットフォーム。通常、最初の取得後に、すべての操作で 1 回取得して 1 日の API 呼び出し数が消費されるのを防ぐために記録するためにのみ使用されます。

これは、WeChat 上の管理機能を操作する必要がある場合にのみ使用されます。通常、WeChat プラットフォームの管理背景のみがこれを使用します。初回以降は、すべての操作で一度取得してしまい、その日の API 呼び出し数が消費されてしまうことを防ぎます。


私が話しているのは、WeChat の Web ページは基本的なユーザー情報の取得を許可するものであり、WeChat の基本的な機能インターフェイスではありません。 。

おおよそのプロセスは次のとおりです:
1. URL アドレスを構築します:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

REDIRECT_URI 私自身の Web アドレスです。ユーザーは上記のアドレスに直接アクセスし、パラメーター CODE を指定して REDIRECT_URI アドレスをコールバックします。ここにはユーザーの openid はありません

2.
https://api.weixin.qq.com/sns/oauth2/access_token?appid = appid&secret = appsecret&code = code&grant_type = authorization_code code access_tokenを取得するコードに従ってaccess_tokenを取得します。ここでは返送されます。 "openid": "OPENID",
"scope":"SCOPE"
}
このステップでのみ openid が存在します。これは、現在私のページにアクセスしている WeChat ユーザーの openid です
3.
openid に基づいて WeChat ユーザー情報を取得します

そして問題はステップ 2 です。
access_token を保存しました。次回は 2 番目のステップをスキップする必要がありますか?スキップした場合、openid を取得するにはどうすればよいですか? openid がないとステップ 3 に進むことができません。 。

access_token が保存されていない場合は、WeChat ユーザーが Web ページにアクセスするたびに access_token を取得する必要があります。頻繁すぎる。 。



これをやったことがありませんか?

ユーザーの openid はデータベースに保存され、ユーザーにバインドされます
access_token が取得されるたびに、データベースに保存されます。使用する前に、まずデータベースの access_token の有効期限が切れているかどうかを確認してください。有効期限が切れたら、再取得して保存します。
access_token 取得し続けると、最終的にサービスを提供できなくなります。

ユーザーの openid はデータベースに保存され、ユーザーにバインドされます。
access_token は取得するたびにデータベースに保存されます。使用する前に、まず access_token の有効期限が切れているかどうかを確認してください。有効期限が切れている場合は、再取得して保存してください。制限を受け続けると、最終的にはサービスを提供できなくなります

承知しました。 。

しかし、WeChat の Web 認証では、ユーザーの openid を取得する唯一の方法は、トークンを取得して同時に返すことです。 。つまり、トークンを取得するときに、トークンと、現在 Web ページにアクセスしている WeChat ユーザーの openID の両方が返されます。 。基本的なインターフェースとは異なります。基本インターフェースでは、ユーザーが操作するたびにユーザーのopenidを取得できます。 。 "scope" :"SCOPE"

}
しかし、ユーザーのopenidがなければ、トークンを持っていてもユーザー情報を取得することはできません。 。

リーリー

つまり、現在 Web ページにアクセスしている WeChat ユーザーの openid を取得するには、まずトークンを取得する必要があります。その後、現在 Web ページにアクセスしている WeChat ユーザーの openid を取得できます。
このように、毎回トークンを取得する必要があります。私がそれを保持する意味はありません。 。


詳細については、以下を参照してください:
http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html

または、トークンと openid を初めて取得した後に保存します。
次に、ユーザーの openid を cookie に保存します。 。
次回は、Cookie内のopenidと、保存されているopenidに対応するトークンを直接読み取り(トークンを取得するステップをスキップするのと同等)、ユーザー情報を直接取得しますか? ?

ただし、この場合、クライアントが Cookie をサポートしていなくても、結果は同じになります。 。 。 。

ユーザー統計を行う必要があるのは何ですか? サードパーティのログインのためだけの場合は、WeChat のサードパーティのログイン文書に従うだけで済みます。バックグラウンドでユーザー同期を実行したい場合は、パブリックが必要です。いいえ。

WeChat アクティビティを実行します。 。
これにはログインは必要ありません。Web ページにアクセスする各 WeChat ユーザーの openID だけで十分です

チャンスはありません。 。 。 。やあ

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