2013-08-21 3 views
12

Google oauthを使用してAndroidアプリでユーザーを認証しようとしています。 その後、Googleカレンダーといつでも接続できるように、アプリサーバーに送信します。AndroidからGoogleのoauth認証トークンを取得しています - invalid_scope/Unknownエラーを返す

私はこの記事に続き GoogleAuthUtil.getToken(getApplicationContext(), mAccountName, mScope);

を使用しようとしました: https://developers.google.com/accounts/docs/CrossClientAuth

私はスコープ mScope = "oauth2:https://www.googleapis.com/auth/calendar https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile"; でそれを使用する場合、私は時間

でも有効ですトークンを取得私は認証コードを取得しようとします(したがって、私は長い時間有効な更新トークンを得ることができます) mScope2 ="oauth2:server:client_id:{CLIENT_ID}.apps.googleusercontent.com"+ ":api_scope:https://www.googleapis.com/auth/calendar https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile";

"invalid_scope"または "Unknown"例外が発生します。

私は間違っていますか?

EDIT: OK、google APIコンソールで新しいアプリを作成してスコープにplus.loginを追加したところ、コードが表示されましたが、何らかの理由でサーバーがこのトークンを解決できません。サーバーを解決しようとすると、リダイレクトURLに関するエラーが発生します。 ところで、私は同じパラメータを使ってウェブの流れをします。

答えて

11

OK、解決策を見つけたので、私はGoogle OauthとAndroidでの作業についてGoogleに多くの優れたドキュメントがあると思っていました。あなたは、Webアプリケーションに

  • を作成する前に、サービスアプリケーションを作成しないでください、GoogleのクライアントIDを作成するときは、Androidで動作するように知っている必要がありますし、オフライントークン

    1. いくつかのことは、あなたの中にhttps://www.googleapis.com/auth/plus.loginを含める必要があります範囲

    2. 私のサーバーでワンタイム認証コードを解決するには、Webクライアントからではなく、AndroidクライアントIDの詳細(URLのように見えない)からリダイレクトURLを使用する必要がありました。 Google APIコンソールの詳細。

  • +0

    私はそれをやっていません。どうすればいいのか分かりますか? – prashantwosti

    +2

    万が一どこにでもあなたのコードを掲載していますか(Githubなど)?私は未知の例外を取得している、それは私がもう何を試していいのかわからない絶対に狂った私を運転している... –

    +1

    ありがとうございました。第三のステップは実際に重要です。私は1日中、私の要求に間違っていると思ってしまいました。グーグルは本当に良い文書を提供するためにもっと努力するべきです。 –

    0

    そのスコープ文字列は、GoogleAuthUtil()に渡されたときにのみ動作することが証明されています(http://developer.android.com/reference/com/google/android/gms/auth/GoogleAuthUtil.html、Android)。しかし、iOSでもうまくいけばそれはクールだろう。私たちのインフラストラクチャは、Androidのどこにあるのか少し後であります。

    +0

    私はAndroidを使用しています – Gil

    関連する問題