Android Access Token для Google Drive Api для загрузки файла

Чтобы загрузить файл с Google Диска в соответствии с этим, мы должны использовать

ПОЛУЧИТЬ https://www.googleapis.com/drive/v3/files/0B9jNhSvVjoIVM3dKcGRKRmVIOVU?alt=media Авторизация: носитель 'ACCESS_TOKEN'

Я хочу знать, что это за токен доступа? это идентификатор клиента Android? при передаче идентификатора клиента в заголовке авторизации, но он дает 401 неавторизованную ошибку. и если я использую приведенный ниже код, файл успешно загружен, но когда я пытаюсь его открыть, он говорит, что файл недействителен

OutputStream outputStream = new ByteArrayOutputStream();
driveService.files().get(fileId)
    .executeMediaAndDownloadTo(outputStream);

person Naveed Ali    schedule 05.09.2017    source источник
comment
вам не нужно эмулировать клиента, а добавить его можно с помощью gradle...   -  person Martin Zeitler    schedule 05.09.2017
comment
@MartinZeitler, что делать? Нужно ли нам что-то добавлять в файл манифеста..?   -  person Naveed Ali    schedule 05.09.2017
comment
Вы добавили зависимости в файл .gradle?   -  person Chamin Wickramarathna    schedule 05.09.2017
comment
@NaveedAli добавил зависимости ниже. надеюсь это все.   -  person Martin Zeitler    schedule 05.09.2017
comment
Да, я добавил зависимости... но я подтвержу   -  person Naveed Ali    schedule 05.09.2017
comment
в целях тестирования вы можете сгенерировать токен доступа из Google OAuthplayground, который предоставит вам токен доступа на 1 час. В производственной среде это генерируется Google OAuth API.   -  person noogui    schedule 06.09.2017


Ответы (2)


Вы можете добавить клиентскую библиотеку Drive API для Java. в модуль build.gradle... вместо создания совершенно нового клиента для REST API Google Диска. Затем clientId должен исходить из файла google-services.json (и может отличаться от учетных данных REST, проверьте консоль).

dependencies {

// HTTP-клиент Google:

compile 'com.google.http-client:google-http-client-android:1.22.0'
compile 'com.google.http-client:google-http-client-jackson2:1.22.0'

// Клиент Google API:

compile 'com.google.api-client:google-api-client-android:1.22.0'
compile 'com.google.api-client:google-api-client-jackson2:1.22.0'

// Клиент Google OAuth:

compile 'com.google.oauth-client:google-oauth-client:1.22.0'

// API Google Диска:

compile 'com.google.apis:google-api-services-drive:v3-rev65-1.22.0'

}

затем запустите ./gradlew clean, чтобы загрузить библиотеки.

person Martin Zeitler    schedule 05.09.2017
comment
Токен доступа, идентификатор клиента?? - person Naveed Ali; 05.09.2017
comment
@NaveedAli есть зависимость от клиента Google OAuth ... так что вам, вероятно, не нужно об этом беспокоиться. создавать REST-клиент для Android — полный нонсенс, а есть готовый Java-клиент для Android… просто используйте его и пробуйте создавать веб-приложения для Android. - person Martin Zeitler; 05.09.2017
comment
Токен доступа @ Naveed Ali не является идентификатором клиента, проверьте мой ответ здесь. - person noogui; 06.09.2017
comment
@noogui, вы, ребята, похоже, все испортили различные API, доступные для доступа к Google Диску ... ваш JavaScript не имеет отношения к вопросу о Java. bubblecode.net/en/2016/01/22/understanding-oauth2 ...в то время как на Android не нужно ничего кодировать с нуля, потому что есть файл google-oauth-client. подход к решению принципиально испорчен при использовании (неправильного) REST API. - person Martin Zeitler; 06.09.2017
comment
@MartinZeitler, ты прав. я просто указывал, что это не «идентификатор клиента», который вы можете скопировать и вставить из своей консоли разработчика Google. Опять же, вы правы :) образец JS просто предназначен для демонстрации процесса, подобного этому, в Java-клиенте oauth google. - person noogui; 06.09.2017
comment
@noogui на Android очень похож на developers.google.com/identity/sign-in /android/start (в проект просто добавляется один файл, который содержит все виды учетных данных) - в то время как библиотека позаботится о токенах доступа и обновления. - person Martin Zeitler; 06.09.2017

После прочтения этой статьи я узнал, что такое токен доступа именно Безопасность мобильного API

В OAuth2 для безопасности мобильных API

  1. Пользователь открывает ваше мобильное приложение, и ему предлагается ввести имя пользователя или адрес электронной почты и пароль.

  2. Вы отправляете запрос POST из своего мобильного приложения в службу API с включенными данными имени пользователя или электронной почты и пароля (ЧЕРЕЗ SSL!).

  3. Вы проверяете учетные данные пользователя и создаете маркер доступа для пользователя, срок действия которого истекает через определенное время.

  4. Вы сохраняете этот токен доступа на мобильном устройстве, рассматривая его как ключ API, который позволяет вам получить доступ к вашей службе API.

  5. Когда срок действия токена доступа истекает и он больше не работает, вы повторно запрашиваете у пользователя имя пользователя или адрес электронной почты и парольU.

person Naveed Ali    schedule 20.10.2017
comment
вы получаете токен доступа, а затем вам нужно получить токен обновления... в то время как вы полностью заново изобретаете колесо, которое вообще не требуется на Android. не будет голосовать против, а подход просто бессмысленный. зачем вы тратите время на то, чтобы написать клиент, который не работает, когда есть клиент, который работает и активно поддерживается? просто примите ответ выше, и он скоро заработает ... вы даже пробовали? - person Martin Zeitler; 23.10.2017
comment
брат, я оставил эту задачу в ожидании, потому что меня перевели в другой проект.. Мне не было ясно о токене доступа, поэтому я задал этот вопрос, но теперь с помощью упомянутой статьи теперь ясно. проблема возникала, даже когда я пробовал ваши строки ... вот почему я не мог принять это ... теперь у меня нет достаточно времени, чтобы вернуться к этой задаче ... поэтому я не могу принять ваш ответ, извините за это :) - person Naveed Ali; 23.10.2017
comment
вам, очевидно, придется использовать классы загруженной библиотеки вместо вашего кода. вот документы: developers.google.com/api-client- library/java/apis/drive/v3 — реализация oAuth2 объясняется здесь: developers.google.com/api-client-library/java/ - person Martin Zeitler; 24.10.2017