奇妙な問題があります。私はグーグル認証を使用しています、そしてこれはアンドロイド>3.xで動作します
しかし、Samsung Handled(androidバージョン2.3.3)でテストしたところ、userinfo.email
スコープが機能しませんでした。
oauth2:https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email
しかし、いくつかの試行の後、私はそれを機能させる方法を見つけました。スコープを交換する必要があります:
oauth2:https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile
これは、Android2.3.5バージョンにアップグレードするまで機能しました。その後、ユーザーのメールを取得する権利を持つトークンを取得できませんでした。メールだけでスワップしてみましたが、うまくいきませんでした。
私のコード:
private static final String SCOPE = "oauth2:https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email";
am.getAuthToken(account, SCOPE, null, this, new AccountManagerCallback<Bundle>() {
public void run(AccountManagerFuture<Bundle> future) {
try {
Bundle result = future.getResult();
String token = result.getString(AccountManager.KEY_AUTHTOKEN);
Log.d(TAG, "Google tokenas: " + token);
authWithToken("google", token); //here I get working token, but this token don't have rights to grab user email
} catch (OperationCanceledException e) {
unsuccess();
} catch (AuthenticatorException e) {
unsuccess();
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}, new Handler(new Handler.Callback() {
public boolean handleMessage(Message msg) {
Log.d(TAG, "on error: " + msg.what);
return false;
}
}));
この方法は、Android4.0.4および4.1.xでも引き続き機能します。