私は Asp.Net MVC に取り組んでいます。Facebook Graph API を使用して、Facebook を Web アプリケーションに統合しようとしています。OAuth メカニズムを使用して Facebook からデータを取得しています。最初のステップで、次のようにエンドポイントを呼び出しました。
https://www.facebook.com/dialog/oauth?client_id={app_id}&redirect_uri={redirect_uri}&scope=email,read_stream,publish_stream,read_friendlists");
つまり、ユーザーは Facebook のログイン ページにリダイレクトされ、資格情報を入力し、有効な資格情報の確認後、public profile Info, email,etc.
最初のダイアログのように許可を求めます。2 番目のダイアログではpost on your wall behalf of you
、ユーザーがリダイレクトされたすべてのアクセス許可に対して [OK] を選択するかどうかを尋ねられ、承認コードを使用して URI をリダイレクトします。そして、このエンドポイントを使用してアクセス トークンを取得します。
https://graph.facebook.com/oauth/access_token?client_id={appid}&redirect_uri={redirect_uri}&client_secret={appsecret}&code={authorization code}
また、この短命のアクセストークンを次のように拡張しました
https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id={appid}&redirect_uri={redirect_uri}&client_secret={appsecret}&fb_exchange_token={accesstoken above}
アクセストークンを取得し、データベースに保存しました。
そして、Graph API Explorer を使用する直前に彼が選択したユーザーの権限を調べたところ、次のような応答がありました。
"installed": 1,
"basic_info": 1,
"email": 1,
"user_likes": 1,
"user_photos": 1,
"user_notes": 1,
"user_subscriptions": 1,
"publish_stream":1,
"read_stream":1,
"read_friendlists":1
今のところすべて正常に動作します。Facebookサイトからログアウトし、アプリから新たにログインすることにしました。Facebookにログインした後、自分のサイトにリダイレクトできず、常にそのFacebookログインページにスタックし、最後にアドレスバーのURLを確認すると、ユーザーが拒否され、エラーコード200と表示されます。グラフAPIエクスプローラーを使用しているユーザーと、次のような応答がありました。
"installed": 1,
"basic_info": 1,
"email": 1,
"user_likes": 1,
"user_photos": 1,
"user_notes": 1,
"user_subscriptions": 1
ここで、拡張アクセス許可を失ったpublish_stream,read_stream
ことがわかりました。そのため、サイトへのアクセスが許可されていません。しかし、すでに Facebook サイトにログインして自分のサイトにアクセスすると、ユーザー プロファイル、タイムラインなどにアクセスでき、エラーは発生しません。auth_type=reauthenticate
また、スコープとともに追加すると成功しますが、ユーザーにログインを約2回要求しますが、これは私の要件ではありません。2 回目のログインで拡張アクセス許可が失われる理由。私のプロセスで間違っていた場合は、私を導いてください。ありがとうございました。