2013-01-22 10 views
11

は、私は、ユーザーが独自のURLを持つアプリケーションを開発しています、そして、彼らは、GoogleのAPIを使用する必要がある - 異なるリダイレクトURIを持つもちろん、任意の量のリダイレクトURIを処理するにはどうすればよいですか?

  • www.example.com/johndoe/google/login
  • のように

www.example.com/foobar/google/login

  • だから最初、私は単純にワイルドカード(www.example.com/*/google/login)を使用してこの問題を解決することができると思ったが、それは残念ながらdoesnのそのように働く。その後、私はPerlで単純なプロキシをコーディングし始めましたが、それがうまくいくかどうかわからず、時間がなくなりました。状況に対処する最善の方法は何ですか?私は登録ハンドラから新しいリダイレクトURIをコンソールに追加することを考えましたが、サーバーがこれを行うことができる方法はありませんでした。

  • +0

    は http://stackoverflow.com/questions/7722062/google-oauth2-redirect-uri-with-several-parametersを おかげで答えを参照してください! – Kiran

    答えて

    14

    ワイルドカードは、Google OAuth2リダイレクトURIではサポートされていません。 1つのリダイレクトURIを使用し、stateパラメータのユーザー情報を渡すことをお勧めします。応答として状態パラメータが返されます。承認コード/トークンを受け取ったら、状態パラメータを検索して適切に応答を処理できます(たとえば、ユーザー固有のURLにリダイレクト)。

    This answerさらに詳しい情報があります。

    +1

    ええと私はどのように応答を処理するのですか?そこには「状態」パラメータではないようです。コードを受け取った後にリダイレクトURIを使用することはできますか?実際のAPIを呼び出すのはどうですか?私がアクセストークンを持っている場合、どこからでもそれを使うことができますか? – r1pp3rj4ck

    +2

    リクエストを準備するときに、stateパラメータを渡します。たとえば、そこにユーザー名を含めることができます。承認コードを受け取り、アクセストークン/リフレッシュトークンを交換すると、有効なアクセストークンと、ユーザー名が入力された状態パラメーターが表示されます。それをどうするかは、アプリケーションによって決まります。アクセストークンの主な制限は、短期間であることです(レスポンスのexpires_inパラメータをチェックすることができます.3600秒と思います)。したがって、アクセストークンのために長期間更新されたリフレッシュトークンを定期的に交換する必要があります。 – vlatko

    +0

    ありがとう!実際には、私のコメントに答える前にすべてを解決しましたが、それでもいくつかのことがクリアされています。 – r1pp3rj4ck

    関連する問題