example - El método setJsonHttpRequestInitializer no está definido para el tipo Drive.Builder Android
java connect google drive (2)
Es posible que esté utilizando una versión anterior de la biblioteca de Java.
De todos modos, puede usar la instancia del objeto GoogleCredential
como HttpRequestInitializer
, como en el siguiente código:
private Drive getDriveService(String token) {
Credential credential = new GoogleCredential().setAccessToken(token);
Drive.Builder b = new Drive.Builder(
AndroidHttp.newCompatibleTransport(), new JacksonFactory(), credential)
.setHttpRequestInitializer(credential);
return b.build();
}
Estoy creando una aplicación para trabajar con Google Drive en Android.
He buscado en internet algunos ejemplos, pero todos son iguales. Me aparece el siguiente error:
Object Drive.Builder does not have method setJsonHttpRequestInitializer.
He probado con Google drive API V1 y V2 sin suerte.
¿Dónde está el problema?
Fuente:
private Drive getDriveService(String accountName) {
HttpTransport ht = AndroidHttp.newCompatibleTransport();
JacksonFactory jf = new JacksonFactory();
Credential credential = new Credential(BearerToken.authorizationHeaderAccessMethod()).setAccessToken(accountName);
Drive.Builder b = new Drive.Builder(ht, jf, null);
b.setJsonHttpRequestInitializer(new JsonHttpRequestInitializer() {
@Override
public void initialize(JsonHttpRequest request) throws IOException {
DriveRequest driveRequest = (DriveRequest) request;
driveRequest.setPrettyPrint(true);
driveRequest.setOauthToken(accountName);
driveRequest.setKey(API_KEY);
}
});
return b.build();
}
Encontró que el método setJsonHttpRequestInitializer no está definido si usa google-api-java-client-1.12.0-beta
Se descargó e importó google-api-java-client-1.11.0-beta
Pero ahora obtienes: Usar ID de cliente para aplicaciones instaladas: ID de cliente.
com.google.api.client.http.HttpResponseException: 403 Forbidden
{
"error": {
"errors": [
{
"domain": "usageLimits",
"reason": "accessNotConfigured",
"message": "Access Not Configured"
}
],
"code": 403,
"message": "Access Not Configured"
}
}
Usando Simple API Access: clave de API
Exceptioncom.google.api.client.googleapis.json.GoogleJsonResponseException: 401 Unauthorized
{
"code" : 401,
"errors" : [ {
"domain" : "global",
"location" : "Authorization",
"locationType" : "header",
"message" : "Invalid Credentials",
"reason" : "authError"
} ],
"message" : "Invalid Credentials"
}
Aquí están las fuentes del proyecto:
http://www.sendspace.com/file/an6xxy
¿Qué está mal, tal vez algo con Huella digital de certificado (SHA1)?
Probando calendar-android-sample de google.
Parece que tengo problemas con la aplicación de registro en la consola google api.
¿Dónde poner la identificación del cliente que obtengo en la muestra?
Después de ejecutar la muestra en modo de depuración en Android, obtener "acceso no configurado".
En Android, la mejor práctica es usar los servicios de Google Play para OAuth 2.0. A partir de la versión 1.12.0-beta de la biblioteca, debe usar GoogleAccountCredential para lograr esto.
Utilice el ejemplo que escribí calendar-android-sample como guía para la mejor práctica para OAuth 2.0 en Android. Por favor, lea las instrucciones cuidadosamente. Tenga en cuenta que primero debe registrar su aplicación en la Consola de API de Google para que esto funcione. Fragmento de código de la muestra:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
// Google Accounts
credential = GoogleAccountCredential.usingOAuth2(this, CalendarScopes.CALENDAR);
SharedPreferences settings = getPreferences(Context.MODE_PRIVATE);
credential.setSelectedAccountName(settings.getString(PREF_ACCOUNT_NAME, null));
// Calendar client
client = new com.google.api.services.calendar.Calendar.Builder(
transport, jsonFactory, credential).setApplicationName("Google-CalendarAndroidSample/1.0")
.build();
}