0

ユーザーに対してFacebookアプリを認証しようとしています。不適切な形式のURLパラメータを使用したoauthの返信

私のアプリケーションは、OAuthの認証プロセスを開始するために以下の機能を提供します。

https://graph.facebook.com/oauth/authorize?state=abc&response_type=code&client_id=292634984182123&redirect_uri=http://dev.foo.com:12020/app/c-rex/authorize-facebook-action/&scope=publish_pages,email&type=user_agent

次にブラウザは、Facebookのにリダイレクトする権限を要求し、与えられたリダイレクトURLにはなく、不適切なURLパラメータとリダイレクトします。

http://dev.foo.com:12020/app/c-rex/authorize-facebook-action/?#state=abc&access_token=wqeqeqBAJmOBc25oYf64IaJBO8Y7k0pOgfo3q3PzoystyqvGPFeve5F8RxZCWtAVUyZB14YaWaZC4escFL69UxcZCHZBI2riqx88rUdKFx7riLPY83D1uY1Qtf9LJfZBuC1nv7sJH1BmIOXV0ZAP94jiaXV5M5tNU99lucTAZDZD&expires_in=6078

あなたは、クエリ文字列を見ることができるようにURLフラグメントとして「#」の後に空の代わりに、クエリ文字列です。それはかなり変わったように見えます... URLには、ハッシュマークが含まれていなければ正しいはずです。フラグメントはサーバーにとって無関係なので、コード内のURLからフラグメントを取り出すことはできません。

これはFacebookのバグですか?

+0

いいえ、間違ったパラメータを渡した可能性が高いです。たとえば、そこに 'code'パラメータがあるとしたら、意味がありません。ユーザーがアプリケーションを承認した後にログインダイアログから_back_コードを取得し、そのコードをアクセストークンと交換する必要があります。ですから、既に存在する 'code'パラメータを使ってプロセス全体が意味をなさないのです。 – CBroe

+0

「コード」は違いはありません。実際には、https://graph.facebook.com/oauth/authorize?state=xxxx&redirect_uri=http://dev.foo.com:12020/app/c-rex/authorize-facebook-action/&response_type=のようなURLの変更がありますcode&client_id = xxxxxxxx&scope = publish_pages、email&type = user_agent –

+0

問題が解決しない場合は、https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow#loginを参照してください。ログインダイアログ。 – CBroe

答えて

1

https://developers.facebook.com/docs/apps/changelog

[のOauthアクセストークン]フォーマット - あなたが今access_tokenはのためのコードを交換する代わりに、URLエンコードされているのに有効なJSONを返すときhttps://www.facebook.com/v2.3/oauth/access_tokenの応答形式が返されます。この応答の新しいフォーマットは{"access_token":{TOKEN}、 "token_type":{TYPE}、 "expires_in":{TIME}}です。このアップデートでは、RFC 6749のセクション5.1に準拠するようにしました。

関連する問題