2016-10-14 4 views
2

Я добавляющие поддержку Google Drive, чтобы мое приложение, используя v3 REST API, как описано здесь: https://developers.google.com/drive/v3/web/quickstart/androidОбход GoogleAccountCredential.RequestHandler с использованием устаревших методов

Точно такая же проблема возникает в Gmail API: https://developers.google.com/gmail/api/quickstart/android

Я использую GoogleAccountCredential, как описано здесь. Он получает включен через мой Gradle:

compile('com.google.api-client:google-api-client-android:1.22.0') { 
    exclude group: 'org.apache.httpcomponents' 
} 

Однако, есть проблема с его вложенным классом GoogleAccountCredential.RequestHandler В методе handleResponse это вызывает GoogleAuthUtil.invalidateToken (контекст, маркер); которая характеризуется устаревшим, поскольку он требует разрешений MANAGE_ACCOUNTS и USE_CREDENTIALS, как указано здесь: GoogleAuthUtil.invalidateToken

Это проявляется, когда я использую веб-интерфейс Google, чтобы отключить приложение от Drive и попытаться повторной аутентификации с использованием приведенного выше примера Quickstart. Затем это вызывает java.lang.SecurityException: у вызывающего uid отсутствует какой-либо из android.permission.MANAGE_ACCOUNTS, android.permission.USE_CREDENTIALS (как и ожидалось).

Я мог бы, конечно, добавить эти разрешения в свое приложение, но я бы предпочел. Диспетчер Android Studio SDK не показывает новых обновлений для связанных библиотек.

Любая работа вокруг, за исключением использования PlayServices и вместо этого непосредственно с помощью GoogleAuthUtil?

ответ

2

После некоторых экспериментов я смог обойти это, подклассифицировав GoogleAccountCredential и в его «public void initialize (HttpRequest request)» использовать RequestHandler, который является копией реализации по умолчанию, за исключением того, что он вызывает clearToken вместо invalidateToken. clearToken может бросить некоторые исключения, которые необходимо поймать и обработать соответствующим образом.

+0

У меня была такая же проблема с gmail api, и она была решена так же, как и вы. Не могли бы вы принять свой собственный ответ? возможно, это может помочь кому-то в далеком будущем, как это было в ближайшем – nandsito

Смежные вопросы