7

私はRESTfulなAPIを提供するnode.js expressアプリを持っています。私はFacebook認証にパスポートを使用しています。私はサーバー側でCORSのすべての構成を有効にし、jQuery Ajaxを介してAPIを使用することができました。 Facebook認証の場合、次のエラーが表示されます。"これはパスポートのfacebookログインでプリフライト"エラーが必要なクロスオリジン要求では許可されていませんか?

XMLHttpRequest cannot load http://localhost:3000/auth/facebook. The request was redirected to 'https://www.facebook.com/dialog/oauth?response_type=code&redirect_uri=http%…_me%2Cuser_checkins%2Cuser_likes&client_id=12345678&type=web_server', which is disallowed for cross-origin requests that require preflight. 

/auth/facebookエンドポイントはこちらです。

app.get('/auth/facebook', 
    passport.authenticate('facebook', { 
     scope: ['email', 'user_about_me', 'user_checkins', 'user_likes'], 
     failureRedirect: users.authFailCallback 
    }), users.signin); 

したがって、CORSを許可しないFacebookのAPI(302)にリダイレクトされます。 これを解決する方法はありますか?あるいは、サーバー側からFacebook APIを呼び出す必要がありますか?

+0

頭字語はCORS(クロスオリジンリソース共有) – Akrikos

+0

です。編集されました。ありがとう –

答えて

4

それはWebKitのバグかもしれないようにこれが見えます:

https://bugs.webkit.org/show_bug.cgi?id=112471

あなたは、最新のFirefoxでこの動作を再現しようとしたことがありますか?

これを修正するための最良の方法(2013-12-05)は、できれば電話をサーバー側にすることです。 IE 8はCORS仕様の多くをサポートしていないため、おそらくIE 8との互換性を可能にするためのサーバー側の要求が必要になるでしょう。私は同じドメインのプロキシを使用してIE 8を稼働させます。

幸運。

0

フロントエンドから302(リダイレクト)という結果になるサーバーapiを呼び出すことはできません。 あなたはそのサーバーに直接ユーザーを送り、そこから彼をフェイスブックにリダイレクトする必要があります。ユーザーを保存してからリダイレクトしてください。

関連する問題