2017-08-01 30 views
1

私はバックエンドにFacebookによるユーザ認証のための投稿投稿要求を送信しようとしていますが、FacebookにリダイレクトされてFacebookにログインします。私は正常に検証され、ユーザーオブジェクト(バックエンドで設定されたもの)が返されました。私のバックエンドのFacebookの認証はspring social tutorialの後に行われ、Geoffroyの春のソーシャルログインのチュートリアルgeoharin.GitHub dot io/social-login-with-spring.htmlにも従っています。投稿要求後にlocalhost:8080からlocalhost:3000にリダイレクト

const auth_url = "/connect/facebook"; 
<form className="signin__form" action={auth_url} method="post"> 
    <input type="hidden" name="scope" value="user_friends" /> 
    <button type="submit" className="signin__form-btn"> 
    SIGN IN WITH FACEBOOK 
    </button> 
</form> 

マイpackage.jsonプロキシはlocalhostへの接続/ Facebookの応答:次のようになります。私のフロントエンドReact.Jsコードは(3000をローカルホスト上で実行されます)8080と、次のようになります。

{ 
... 
"proxy": { 
    "/connect": { 
     "target": "http://localhost:8080", 
     "secure": false, 
     "changeOrigin": true 
    } 
    }, 
... 
} 

何I

ローカルホスト上:3000

{React view components} 

私が見る何を: で見ることを期待localhostを:私はアヤックスがへのフロントエンドで要求を取得することができ、バックエンドのリダイレクト後に3000を完成し、私はバックエンドで別の方法を行う必要があります:8080

{ 
    user: info 
} 

私の質問は、私はローカルホストに戻ることができる方法でありますJSONオブジェクトを戻すのではなく、ユーザー情報を取得します。私はspring.socialハンドシェイクが終了した後に3000に戻ってリダイレクトする方法がわかりません。

答えて

1

実はあなたはまた、私はAJAXでフォームを送信することをお勧めクライアント

@RequestMapping(value = "/auth_url", method = RequestMethod.POST) 
public void login(HttpServletResponse response) { 
    response.setHeader("Location", "http://localhost:3000"); 
} 

ORコントローラ

@RequestMapping(value = "/auth_url", method = RequestMethod.POST) 
public ModelAndView login() { 
     return new ModelAndView("redirect:http://localhost:3000"); 
} 

からリダイレクトURLを返すようにリダイレクトするために、あなたのコントローラ

ヘッダーを変更することができますlocalhostを終了せずにSuccessを処理する:3000

+0

こんにちは、th返信のためのanks!私はfetchとaxiosライブラリを使ってAJAXの投稿リクエストをやろうとしましたが、バックエンドのauthコントローラで認証するためにFacebookに送られたときに戻ってくる302リダイレクト応答が気に入らなかった。リダイレクトが完了するのを待ってから応答を受け取る方法はありますか? –

関連する問題