0

私は 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 回目のログインで拡張アクセス許可が失われる理由。私のプロセスで間違っていた場合は、私を導いてください。ありがとうございました。

4

0 に答える 0