ユーザーのGoogleドライブへの読み取り/書き込みアクセスを許可する必要があるAndroidアプリケーションを開発します。さらに、パブリックデバイス(多くのユーザーが同じデバイスを使用してGoogleドライブアカウントにアクセスする可能性がある)で動作することになっています。このような状況では、各ユーザーのアカウントをAndroidアカウントマネージャに追加することは容認できません。残念ながら、すべての公式ガイドは、デバイスに登録されているGoogleアカウントで認証を使用します。 端末から既存のGoogleアカウントを選択するか、新しいGoogleアカウントを追加するポップアップが表示されます。デバイスにGoogleアカウントを追加せずにアンドロイドでGoogleドライブにログインする
protected void onStart() {
super.onStart();
if (mGoogleApiClient == null) {
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addApi(Drive.API)
.addScope(Drive.SCOPE_FILE)
// Optionally, add additional APIs and scopes if required.
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
}
mGoogleApiClient.connect();
}
/**
* Called when {@code mGoogleApiClient} is trying to connect but failed.
* Handle {@code result.getResolution()} if there is a resolution
* available.
*/
@Override
public void onConnectionFailed(ConnectionResult result) {
Log.i(TAG, "GoogleApiClient connection failed: " + result.toString());
if (!result.hasResolution()) {
// Show a localized error dialog.
GooglePlayServicesUtil.getErrorDialog(
result.getErrorCode(), this, 0, new OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
retryConnecting();
}
}).show();
return;
}
// If there is an existing resolution error being displayed or a resolution
// activity has started before, do nothing and wait for resolution
// progress to be completed.
if (mIsInResolution) {
return;
}
mIsInResolution = true;
try {
result.startResolutionForResult(this, REQUEST_CODE_RESOLUTION);
} catch (SendIntentException e) {
Log.e(TAG, "Exception while starting resolution activity", e);
retryConnecting();
}
}
回避策を教えてください。 Googleアカウントにログインする必要があります(実際にはドライブにのみ)。デバイスにアカウントを保存しないでください。完了したら、ログインしてログアウトするだけで、デバイスに個人情報を残す必要はありません。 どうすればいいですか?
代わりに、埋め込みブラウザでWebフローを使用できます。あなたは毎回キャッシュをクリアする必要があります –
私はGoogleドライブアンドロイドAPIを使用して、私が欲しいものを達成する方法がないと確信していますか? – user2924714
わかりません。その代わりです。 –