私のシナリオでは、バックエンドサーバーを搭載したAndroidアプリケーションを使用しています。指定された資格情報を持つアカウントを設定する代わりに、Googleを使用してサインインする機能を実装しています。独自のバックエンドAPIを使用するモバイルAndroidアプリケーションのコンテキストでのリダイレクトURIの役割は何ですか?
サーバー側で、私はLoopBackを使用しています。これは、OAuth2のNode/Express Passportライブラリを使用しています。 Android側では、Googleの最新のサインインライブラリを使用しています。
Androidサインインライブラリは、ログインするGoogleアカウントを選択するようにユーザーに促す処理をすべて行います。これが成功すると、ライブラリは私にサーバー認証トークンを提供します。
このサーバー認証トークンは、その後の私をログに記録し、私のバックエンド、で...トークン?/認証/ /コールバックをGoogleに渡す=することができる。
をこれまでのところ、このすべてがに動作しますエクステント。これまでのところ、バックエンドは開発マシン上で動作します。 Google APIコンソールでは、OAuth2キーのコールバックURIはhttp://localhost:3000/auth/google/callbackを指しています。具体的には、私のAndroidアプリで、私は正常に認証トークンを取得します。私は手動で私の開発マシン上でhttp://localhost:3000/auth/google/callbackにGETするPostmanにこれを貼り付けると正常に認証されます。しかし、アプリケーション自体がトークンをサーバーアプリケーションに渡すようにパズルの最後の部分を完了しようとすると、リダイレクトURIの不一致エラーが発生します。これは、私が仮定することができるのは、同じマシン上のPostmanからのHTTP要求には、ホストヘッダーに「localhost」が含まれているためです。しかし、何かからの要求は、マシンのLAN IPをホストヘッダーに持っています。
私はOAuth2の流れをよく理解していますが、コールバックの目的は、Webアプリケーションのコンテキストで認証トークンをサーバーに送り返すことですアプリケーションがauthトークンを受け取り、トークンをバックエンドのコールバックURI自体に渡すタスクを実行する場合のコールバックURIの妥当性を理解する。
第2に、正常に認証トークンを開発サーバーに渡して正常に認証できますか? Google APIコンソールでlocalhostを指定できますが、明らかにLAN IPは指定できません。
ここにチェックして、これがあなたの質問に答えるかどうかを確認してください:http://stackoverflow.com/questions/28731646/google-oauth-2-0-redirect-uri-mismatch-error-for-cross-client-single-sign -on –
また、私はあなたの質問のすべてに答えることはできませんが、リダイレクトエラーに気づかれる可能性が高いことを認識しています。 –
@ChantellOsejoご意見ありがとうございました。私は今夜作ったいくつかの調査結果の後に自分自身で回答を掲載しましたが、さらなる考えと助けに感謝します。 – Trevor