10

現在の omniauth-facebook にはいくつか問題があるようです。誰かがそれらに対する回答を持っているかどうか知りたいです。

最初の問題は、無効な資格情報の問題でした。この問題のため、クライアント側の承認を使用してアプリケーションにログインできませんでした。ただし、これは facebook-omniauth を 1.4.0 バージョンにダウングレードすることで解決できます。(参考

ただし、次のエラー メッセージで2 番目の問題NoAuthorizationCodeErrorが発生しています。

OmniAuth Strategies Facebook NoAuthorizationCodeError 
(must pass either a `code` parameter or a signed request 
(via `signed_request` parameter):

これはhereで尋ねられましたが、受け入れられた回答では、実際に 1.4.1 バージョンに再度アップグレードすることをお勧めします。これにより、以前の無効な資格情報の問題が再び発生します。したがって、これは私にとって選択肢ではありません。

これは、インターネット エクスプローラーNoAuthorizationCodeError経由で Facebook iFrame (アプリ センターからアプリを検索) 内のアプリケーションにログインしようとすると発生します。クロムまたはファイアフォックスではすべて正常に動作します。この問題を正確に特定するgithubの問題もありますが、まだ誰も答えを出していません。また、omniauth-facebook 1.3.0 バージョンにダウングレードしようとしましたが、違いはありませんでした。また、次のようにパラメーターを渡そうとしました。signed_request

window.location = '/auth/facebook/callback', 
{ signed_request: response.authResponse.signedRequest }

ただし、違いはありませんでした (IE では、エラーは引き続き発生します)。また、それがコードをパラメーターとして渡す正しい方法であるかどうかもわかりません (どうすれば確認できますか?)。

設定に問題はないと思います。この問題について何か助けていただければ幸いです。

アップデート:

認証情報が無効になる問題は発生せずにバージョン 1.4.1 にアップグレードしましたが、Internet Explorer から Facebook 内のアプリケーションにアクセスすると、依然として NoAuthorizationCodeError が発生します。私のGithubの問題を確認してください。

アップデート:

バージョン 1.4.0 にダウングレードし、signedRequest パラメータを追加しました。

<script>
function login() {
  FB.login(function(response) {
    if (response.authResponse) {
      window.location = '/auth/facebook/callback?' + $.param({ signed_request: response.authResponse.signedRequest })
    } 
  }, {scope: 'email,publish_stream,publish_actions'});
}
</script>

ログにエラーやアラートはなく、すべてが期待どおりに機能しています。ただし、Internet Explorer を使用して Facebook iFrame 内にログインすると、コールバック フェーズが開始された後でもログインしません。元の問題は解決されたと思いますが、エラーメッセージが表示されない場合、これをデバッグする方法がわかりません。

問題: Internet Explorer を使用してアプリケーションの Facebook iFrame 内で [Facebook でログイン] をクリックすると、認証プロセスが完了してもログインされません。この問題はその特定の環境でのみ発生し、その理由を突き止めるのに苦労しました.

2013-02-22T01:10:40+00:00 app[web.1]: Started GET "/auth/facebook/callback?signed_request=LONGSTRING" for 200.1.102.103 at 2013-02-22 01:10:40 +0000
2013-02-22T01:10:40+00:00 app[web.1]: (facebook) Callback phase initiated.
2013-02-22T01:10:40+00:00 app[web.1]: Processing by SessionsController#create_facebook as HTML
2013-02-22T01:10:40+00:00 app[web.1]:   Parameters: {"signed_request"=>"LONGSTRING", "provider"=>"facebook"}
2013-02-22T01:10:40+00:00 app[web.1]:   User Load (1.6ms)  SELECT "users".* FROM "users" WHERE "users"."provider" = 'facebook' AND "users"."uid" = 'MYUID' LIMIT 1
2013-02-22T01:10:40+00:00 app[web.1]:    (0.8ms)  BEGIN
2013-02-22T01:10:40+00:00 app[web.1]:   User Exists (1.0ms)  SELECT 1 AS one FROM "users" WHERE ("users"."name" = 'MYNAME' AND "users"."id" != 3) LIMIT 1
2013-02-22T01:10:40+00:00 app[web.1]:    (0.9ms)  COMMIT
2013-02-22T01:10:40+00:00 app[web.1]: Redirected to http://MYAPP.COM
2013-02-22T01:10:40+00:00 app[web.1]: Completed 302 Found in 10ms (ActiveRecord: 4.2ms)

繰り返しますが、他の環境では、承認はすべてのブラウザーで完全に機能します。この問題は、Internet Explorer 経由で Facebook にログインしようとしたときにのみ発生します。

私の環境:omniauth-facebook 1.4.0、omniauth 1.1.1、oauth2 0.8.0、Rails 3.2.11

最新バージョンの無効な資格情報エラーのため、意図的に omniauth-facebook を 1.4.1 から 1.4.0 にダウングレードしました。

4

3 に答える 3

1

omn​​iauth (1.1.3)、oauth2 (0.8.1)、および omniauth-facebook (1.4.1) を利用します。

これらでエラーは発生しません

于 2013-05-02T11:41:11.110 に答える
0

fastcatchこのSOの投稿では、omniauth -exceptionsからより多くの情報を取得することで次のように述べています。

... OmniAuth strategies [...], if they encounter a problem, call the method fail! and pass in a symbol describing the problem like :invalid_credentials and the exception they encountered. The fail! method ends up calling OmniAuth.config.on_failure and passing in the Rack environment (after doing a few other things like sticking the exception into the environment...

于 2013-03-01T14:43:19.513 に答える
0

iframe を使用しているときに Internet Explorer でのみ問題が発生しているため、P3P の問題である可能性があります。

http://www.slideshare.net/cmercier/things-i-learned-writing-a-facebook-canvas-app およびInternet Explorer の IFRAME に Cookie がブロックされている/保存されていないを参照してください。

Internet Explorer は、IFRAME ページに低レベルの信頼を与えます (IE はこれを「サードパーティ」コンテンツと呼びます)。IFRAME 内のページにプライバシー ポリシーがない場合、その Cookie はブロックされます (これは、ステータス バーの目のアイコンで示されます。クリックすると、ブロックされた URL のリストが表示されます)。... この場合、Cookie がブロックされている場合、セッション ID は送信されず、ターゲット スクリプトは「セッションが見つかりません」というエラーをスローします。

rack-p3p gem を追加してみて、それが役立つかどうかを確認してください!

于 2013-08-12T15:07:13.787 に答える