5

ユーザーの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アカウントにログインする必要があります(実際にはドライブにのみ)。デバイスにアカウントを保存しないでください。完了したら、ログインしてログアウトするだけで、デバイスに個人情報を残す必要はありません。 どうすればいいですか?

+0

代わりに、埋め込みブラウザでWebフローを使用できます。あなたは毎回キャッシュをクリアする必要があります –

+0

私はGoogleドライブアンドロイドAPIを使用して、私が欲しいものを達成する方法がないと確信していますか? – user2924714

+0

わかりません。その代わりです。 –

答えて

1

これはできません。 GooDriveに接続するには、デバイスに登録されているアカウント(ユーザー自身によって認証されたアカウント)のみを選択/使用できます。あなたは次のように構築し使用することができたとしても:

mGoogleApiClient = new GoogleApiClient.Builder(this) 
        .addApi(Drive.API) 
        .addScope(Drive.SCOPE_FILE) 
          // Optionally, add additional APIs and scopes if required. 
        .addConnectionCallbacks(this) 
        .addOnConnectionFailedListener(this) 
        .setAccountName([[email protected]]) 
        .build(); 

.setAccountName([[email protected]])を何卒ご了承下さい)、電子メールはまだ、デバイス登録のいずれかのアカウントである必要があります。アプリは彼女/彼自身が認証しなかったどんなアカウントにも対処することができません、それはセキュリティのノー、そうでしょうか?

幸運

+0

アプリがパスワードを要求しない場合のみセキュリティ上の問題です。私が期待しているのは、ユーザーからGmailとパスワードを取得してから、アカウントへの安全な接続を作成する機能があるということです。私の場合、アプリはパブリックデバイスで実行する必要があります。そのため、アカウントを追加するとすぐにメール、カレンダーの同期が開始されます。そして私はちょうどGoogleドライブがほしいと思う。だから公衆端末にアカウントを追加するとプライバシーの問題が発生する – user2924714

+0

私はGoogle社員ではなく、あなたのような開発者です。私が投稿したのは、自分の経験/テストの知識でした。 GDAAの中であなたが描写しているように動作するものは見つかりませんでしたか?たぶん異なるAPIでしょう。 – seanpj

関連する問題