0

GoogleTasksとCalendarAPIの両方を使用するAndroidアプリを書いています。タスクを介した認証は完全に機能します。しかし、カレンダーAPIにアクセスすると、「Googleサービスとの通信中に問題が発生しました。しばらくしてからもう一度お試しください」という画面が表示されます。「サインインできませんでした」という見出しが付いています。[次へ]をクリックすると、サインイン...画面が約0.5秒間表示され、「問題が発生しました」画面に戻ります。

CalendarAPIに対して認証するコードは次のとおりです。正常に動作するTasksAPIのコードはほとんど同じであることに注意してください。

GoogleAccountManager google_manager = new GoogleAccountManager(this);
Account[] accounts = google_manager.getAccounts();
Account my_account;
if (accounts.length > 1) my_account = selectWhichAccount(accounts);
else {
    if (accounts.length == 0) display_no_account_dialog();
    Log.v("account",accounts[0].toString());
    my_account = accounts[0];
}
final String AUTH_TOKEN_TYPE = "oauth2:https://www.googleapis.com/auth/calendar";
Log.v("schedule","getting auth token");
google_manager.manager.getAuthToken(my_account, AUTH_TOKEN_TYPE, null, this, new AccountManagerCallback<Bundle>() {

        @Override
        public void run(AccountManagerFuture<Bundle> future) {
            try {
                String token = future.getResult().getString(AccountManager.KEY_AUTHTOKEN);
                Log.d("schedule","starting scheduletask");
                start_ScheduleTask(t, token);
            } catch (OperationCanceledException e) {
                Log.v("accounts","denied access to account");
                handleException(e);
            } catch (Exception e) {
                handleException(e);
            }
        }
    }, null);
4

1 に答える 1

0

「oauth2:」プレフィックスを使用して指定された OAuth2 トークンは、一部のみがサポートされてAccountManagerおり、一部は機能しません。残念ながら、現在サポートされているものとサポートされていないものは文書化されていません (AFAIK)。ClientLogin (トークン タイプとして「cl」を使用) を使用するか、WebView を使用してトークンを取得します。ClientLogin は今のところ正常に動作するはずですが、公式には廃止されており、約 1 年で廃止されます。

于 2012-05-18T04:42:07.913 に答える