2016-01-17 2 views
0

Я работаю с Google Диском Api, и теперь у меня есть простое приложение (похоже на https://github.com/googledrive/android-quickstart), но я хочу добавить страницу входа с двумя параметрами (логин с Google Drive и вход в систему как гость) только если пользователь не будет входить в учетную запись. Как я могу проверить это? Я хочу показать это действие только тогда, когда после нажатия «Войти с помощью Google Drive» я увижу диалог со списком учетных записей.Google Drive Api проверяет, подписан ли пользователь в

ответ

0

На Google Диске нет гостевого входа. Только учетные записи, зарегистрированные на вашем устройстве Android (см. Настройки> Учетные записи), могут получить доступ к Диску (их GooDrives).

Существует два способа обработки/выбора учетной записи.

1/Вы НЕ указать действительный (зарегистрированный на устройстве) адрес электронной почты аккаунта

GoogleApiClient GAC = new GoogleApiClient.Builder(context) 
    //.setAccountName(email) 
    .addApi(Drive.API) 
    .addScope(Drive.SCOPE_FILE) 
    .addConnectionCallbacks(...) 
    .addOnConnectionFailedListener(...) 
    .build(); 

и GooPlaySvcs будет всплывающее диалоговое окно выбора учетной записи, позволяя ваш пользователю выбрать действительную учетную запись или создать новую. Ваше приложение не будет знать, какую учетную запись пользователь выбрал/создал.

2/Вы ДЕЛАТЬ указать действительный (зарегистрированный на устройства) по электронной почте счета

GoogleApiClient GAC = new GoogleApiClient.Builder(context) 
    .setAccountName(email) 
    .addApi(Drive.API) 
    .addScope(Drive.SCOPE_FILE) 
    .addConnectionCallbacks(...) 
    .addOnConnectionFailedListener(...) 
    .build(); 

Теперь, как вы получите email? Вы не можете указать только произвольное письмо. Опять же, вы должны использовать один из зарегистрированных единиц аппарата через account picker:

<uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
... 
static final int REQ_ACCPICK = 999; 
... 
startActivityForResult(AccountPicker.newChooseAccountIntent(null, null, 
    new String[]{GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE}, true, null, null, null, null), REQ_ACCPICK); 
... 
@Override 
protected void onActivityResult(int request, int rslt, Intent data) { 
    if (
    request == REQ_ACCPICK && 
    rslt == RESULT_OK && 
    data != null && data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME) != null 
) 
    email = data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME); 
    ... 

Пожалуйста, смотрите типичную обработку этого, следуя REQ_ACCPICK в этом code. Вам необходимо добавить менеджера аккаунта (например, класс UT.AM в упомянутой демонстрации) и сохранить адрес электронной почты текущей учетной записи.

Удачи

+0

Я знаю, что на Google Диске нет гостевого входа. Я хочу иметь два варианта: войти в систему с помощью Google Drive или работать в качестве гостя (без функций диска Google), поэтому мне нужно отображать эти параметры только тогда, когда пользователь выходит из Google (после выбора первого варианта я не увижу учетную запись). Мне нужно только знать, вошел ли пользователь в систему или нет. – Giks91

+0

Диспетчер личных счетов приложения с сохранением (вариант № 2) в разделе [GDAA] (https://developers.google.com/drive/android/intro). Или (в разделе [REST Api] (https://developers.google.com/drive/v3/web/about-sdk)) вы можете использовать GoogleAccountCredential.usingOAuth2 (...). SetSelectedAccountName (email)/getSelectedAccount(). Оба должны иметь разрешение «GET_ACCOUNTS». – seanpj