Как добавить учетную запись Google в Android через AccountManager.addaccountExternally ()?

Я хочу добавить учетную запись Google явно. Я предоставлю логин и пароль.

Я только что прошел через этот вопрос uid аутентификатора Но я не нашел решения. Что такое уид? с какой uid сравнивается.

я пытаюсь

    AccountManager mgr = (AccountManager)getSystemService(ACCOUNT_SERVICE);
    Account acc = new Account("[email protected]", "com.google");
    if(mgr.addAccountExplicitly(acc, "Password", new Bundle()))
    {
        //account added successfully
        //do whatever is needed;
        showToast("added");
    }
    else {
        //something did not work
    }

Ошибка: uid вызывающего абонента 10782 отличается от uid аутентификатора.

Что это значит? как мне это исправить?

Кто-нибудь, пожалуйста, скажите мне, как решить эту проблему, полный код будет очень полезен.


person Shivaraj Patil    schedule 16.03.2014    source источник


Ответы (1)


UID — это идентификатор пользователя, назначенный вашему приложению. Каждое приложение имеет свои собственные UID, но если вы сами создадите несколько приложений, их можно сделать поделиться одним и тем же UID.

Аутентификатор — это модуль, который обрабатывает и аутентифицирует учетные записи, принадлежащие этому аутентификатору. Таким образом, аутентификатор Google используется для обработки учетных записей Google, а «аутентификатор X» используется для обработки «X учетных записей».

AddAccountExplicitly — это метод, предназначенный для использования при создании учетных записей вашего собственного типа с вашим собственным аутентификатором. Документация для AddAccountExplicitly скажите:

Этот метод требует, чтобы вызывающая сторона имела разрешение AUTHENTICATE_ACCOUNTS и тот же UID, что и аутентификатор добавленной учетной записи.

Единственный способ, которым UID вызывающего приложения и UID аутентификатора могут быть одинаковыми, — это создать и вызывающее приложение, и аутентификатор учетной записи.

Другими словами, невозможно добавить/создать учетную запись Google с помощью addAccountExplicitly(). Вы можете добавлять аккаунты только для своих собственных сервисов.

В зависимости от того, что вы хотите сделать, возможно, вы можете показать пользователю диалоговое окно «Добавить учетную запись» и позволить пользователю добавить учетную запись самостоятельно: Программный запуск действия «Добавить учетную запись» в Android 2.2

Или, может быть, вы могли бы использовать API-интерфейс каталога Admin SDK для создания учетных записей, которые можно использовать со службами Google, но это не учетная запись Google: Могу ли я создать учетную запись Google программно?

person nibarius    schedule 17.03.2014
comment
nibarius Спасибо за объяснение. В моем приложении я просто хочу поделиться одним из моих файлов на Google Диске с пользователем, когда пользователь вводит свой идентификатор электронной почты и нажимает кнопку «Регистрация» в разделе «Регистрация». Я подумал, что когда он нажимает кнопку регистрации в фоновом режиме, добавляет данные моей учетной записи Google (unamem, pwd), входит в систему и делится файлом, а затем удаляет учетные данные моей учетной записи с мобильных устройств пользователей и запускает домашнюю активность. Есть ли другой способ сделать то же самое? - person Shivaraj Patil; 17.03.2014
comment
Хранение имени пользователя и пароля вашей учетной записи в приложении, как правило, было бы очень плохой идеей, поскольку любой, у кого есть доступ к приложению, может извлечь информацию из apk и завладеть вашей учетной записью. К сожалению, у меня нет никаких идей о том, как вы можете добиться того, чего хотите, с помощью Google Диска. - person nibarius; 17.03.2014