via google from files descargar con archivos curl google-drive-sdk

curl - google - wget drive files



lista archivos de Google Drive con rizo (2)

Para futuros usuarios de Google:

Si quieres ahorrarte una tarde de dolor, olvídate de la documentación de Google y dirígete aquí

La esencia de esto, ya que sé que stackoverflow prefiere citar el contenido a la vinculación:

En tu navegador:

https://accounts.google.com/o/oauth2/auth?scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fanalytics&redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=code&client_id=1234567890.apps.googleusercontent.com

Permita el acceso, por supuesto, y copie el código que debería verse como 4 / v6xr77ewYqjkslsdUOKwAzu

curl -H "Content-Type: application/x-www-form-urlencoded" -d ''code=4/v6xr77ewYqjkslsdUOKwAzu&client_id=1234567890.apps.googleusercontent.com&client_secret=xywzxywzxywzxywzxywz&redirect_uri=urn:ietf:wg:oauth:2.0:oob&grant_type=authorization_code'' https://accounts.google.com/o/oauth2/token

Obtendrás un JSON como este:

{ "access_token" : "ya29.AHES6Zkjhkjhahskjhskkskjh", "token_type" : "Bearer", "expires_in" : 3600, "refresh_token" : "1/HH9E7k5D0jakjhsd7askdjh7899a8sd989" }

Si te rizas:

curl ''https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=ya29.AHES6Zkjhkjhahskjhskkskjh''

obtendrás algo como:

{ "issued_to": "562211803675.apps.googleusercontent.com", "audience": "562211803675.apps.googleusercontent.com", "scope": "https://www.googleapis.com/auth/analytics", "expires_in": 3556 }

Hecho

curl ''https://www.googleapis.com/analytics/v3/management/accounts?access_token=ya29.AHES6Zkjhkjhahskjhskkskjh

Renovar el token

Debes usar el "refresh_token" recibido anteriormente

curl -d "client_id=562211803675.apps.googleusercontent.com&client_secret=ZQxoOBGbvMGnZOYUrVIDXrgl&refresh_token=1/HH9E7k5D0jakjhsd7askdjh7899a8sd989&grant_type=refresh_token" https://accounts.google.com/o/oauth2/token

y obtendrás un nuevo access_token.

Intento obtener la lista de archivos en Google Drive con curl, pero OAuth 2 está obteniendo lo mejor de mí.

Estas son algunas de las cosas que probé:

curl -H "Authorization: Bearer $token" https://www.googleapis.com/drive/v2/files

Donde $ token es una cadena de 460 caracteres que obtuve usando:

https://www.google.com/accounts/ClientLogin

y este script de carga (que funciona muy bien). Este es el error que recibí:

{ "error": { "errors": [ { "domain": "global", "reason": "authError", "message": "Invalid Credentials", "locationType": "header", "location": "Authorization" } ], "code": 401, "message": "Invalid Credentials" } }

También probado:

curl https://www.googleapis.com/drive/v2/files?key=apiKey

Error:

{ "error": { "errors": [ { "domain": "global", "reason": "required", "message": "Login Required", "locationType": "header", "location": "Authorization" } ], "code": 401, "message": "Login Required" } }

Y:

curl -H "Authorization: GoogleLogin auth=${token}" "https://www.googleapis.com/drive/v2/files"

Error:

{ "error": { "errors": [ { "domain": "usageLimits", "reason": "dailyLimitExceededUnreg", "message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.", "extendedHelp": "https://code.google.com/apis/console" } ], "code": 403, "message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup." } }

Tuve poco éxito con las bibliotecas de cliente de JavaScript y PHP, ambas parecen optimizadas para la situación en la que el usuario proporciona el registro / pase para autorizar la aplicación. Lo que necesito es una forma de listar los archivos de una sola cuenta, todo el tiempo.


Acabo de pasar como 30 minutos para resolver esto yo mismo para acceder a la API de contactos y redividé los pasos para la API de la unidad y los documenté para referencia futura. Hay 5 pasos y los primeros 4 son una configuración de tiempo.

Paso 1 : crea nuevas credenciales de OAuth2

Anote la client ID del client ID y client secret .

Paso 2 : Solicitar autorización con unidad como ámbito.

Usando el client ID del client ID y https://docs.google.com/feeds como scope , construya el siguiente comando curl:

$ curl -d "client_id=413437979384-05efiod756k5hp2eji5tsn2lmlg0qslc.apps.googleusercontent.com&scope=https://docs.google.com/feeds" https://accounts.google.com/o/oauth2/device/code { "device_code" : "KRYU-NTVW4/qi6ysOpK2AtsmtZz4MB9LAthlYGGgAepxpBnGQLvhqo", "user_code" : "KRYU-NTVW", "verification_url" : "https://www.google.com/device", "expires_in" : 1800, "interval" : 5 }

Copia el user_code .

Paso 3 : autoriza la solicitud.

Visite la URL de verificación https://www.google.com/device e ingrese el código copiado.

Paso 4 : obtener access_token .

Agregue el device_code obtenido de la solicitud de autenticación al client ID del client ID y al client secret y construya el siguiente comando curl:

$ curl -d "client_id=413437979384-05efiod756k5hp2eji5tsn2lmlg0qslc.apps.googleusercontent.com&client_secret=0zWNribRJ4PcYWH-rDkCpCcm&grant_type=http://oauth.net/grant_type/device/1.0&code=KRYU-NTVW4/qi6ysOpK2AtsmtZz4MB9LAthlYGGgAepxpBnGQLvhqo" https://www.googleapis.com/oauth2/v4/token { "access_token": "ya29.kgKW4Z4IDqK7lCjUQw-u5VT2uAx19MtgdoKeAC9ikKYGwKh7Nh46pY8nQsANQ5lRwA", "token_type": "Bearer", "expires_in": 3600, "refresh_token": "1/qinFVaMPYvhWtUtmjb1qCpnQt48XyvQhB_ILZJ4H1Uw" }

Ahora tenemos el access_token requerido, guárdelo y access_token con todas las solicitudes de la API REST del disco.

Paso 5 : solicitud de Drive API.

$ curl -H ''GData-Version: 3.0'' -H ''Authorization: Bearer ya29.kgKW4Z4IDqK7lCjUQw-u5VT2uAx19MtgdoKeAC9ikKYGwKh7Nh46pY8nQsANQ5lRwA'' https://www.googleapis.com/drive/v2/files { "kind": "drive#fileList", ...