9

アップデート:

ちょうど今、Google App Engine にも使用している Google アカウントで Google API にサインアップしたところ、エラーが次のように変わりました。com.google.android.gms.auth.GoogleAuthException: Unknown


Googleは、Google アカウントを介してアプリにサインアップする新しい方法をリリースしたばかりで、ブログ投稿でも説明を行っています。

ユーザー アカウントを作成するためにサインアップする必要がある Android アプリを作成しており、バックエンドに Google App Engine を使用しています。再生サービスを使用して、ユーザーの Android デバイスに関連付けられたメールとトークンを取得したいと考えています。私はすでに電子メールを取得できますが、トークンを取得するとエラーがスローされるだけであり、ドキュメントが非常にまばらであるため、これらを修正する方法がわかりません。それが私がメールを受け取る方法です:

private String[] getAccountNames() {
    mAccountManager = AccountManager.get(this);
    Account[] accounts = mAccountManager.getAccountsByType(GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE);
    names = new String[accounts.length];
    for (int i = 0; i < names.length; i++) {
        names[i] = accounts[i].name;
    }

    return names;
}

ただし、 を呼び出すとtoken = GoogleAuthUtil.getToken(context, email, "scope"、次のエラーが表示されます: GooglePlayServices not available due to error 1およびcom.google.android.gms.auth.GooglePlayServicesAvailabilityException: GooglePlayServicesNotAvailable.

今私の質問は、それを修正するために権限を設定したり、ライブラリを含めたりする必要がありますか? そして、スコープパラメータは何ですか? トークンを取得する方法とスコープに何を入れるかの例は、スコープ変数を設定するブログ投稿に記載されています"https://www.googleapis.com/auth/userinfo.profile"が、残念ながら同じエラーが発生します。

また、アプリを Google API コンソールに登録し、G+ API を有効にしました。他にも設定する必要がありますか?

4

3 に答える 3

20

Google ドライブの Google クライアント ライブラリを使用しても同じ問題が発生しました。解決策はとても簡単です。scopeUrl の先頭に「oauth2:」を追加するだけです。

違う:

GoogleAuthUtil.getToken(this, account.name, DriveScopes.DRIVE);

右:

GoogleAuthUtil.getToken(this, account.name, "oauth2:" + DriveScopes.DRIVE);
于 2012-10-24T02:22:43.380 に答える
3

最初に、次のように、正しくフォーマットされたスコープを渡す必要があります。

  private final static String G_PLUS_SCOPE = 
      "oauth2:https://www.googleapis.com/auth/plus.me";
  private final static String USERINFO_SCOPE =   
      "https://www.googleapis.com/auth/userinfo.profile";
  private final static String SCOPES = G_PLUS_SCOPE + " " + USERINFO_SCOPE;

また、 https://play.google.com/store/apps/details?id=com.google.android.gmsから Google Play サービスをインストールする必要があります。Google Play サービスは、Google Play がインストールされているすべてのデバイス (Froyo+) へのロールアウトを開始しました。

ここで提供される詳細情報があります: http://android-developers.blogspot.com/2012/09/google-play-services-and-oauth-identity.html

于 2012-10-06T16:47:39.613 に答える
2

OAuth2 をサポートする Google サービスのトークンのみを取得できます。独自の Web サービスを作成している場合は、ネイティブの認証メカニズム (ユーザー名とパスワード?) を使用して認証する必要があります。「スコープ」は明らかに無効なスコープですが、Google Play Services がインストールされていないようで、それがエラーの原因です。Play ストアからインストールできますが、Google サービスを使用していないため、実際には機能しません。

于 2012-10-03T02:36:56.950 に答える