Google Drive - Bild-Upload Error 403

  • Antworten:1
Moritz Bruder
  • Forum-Beiträge: 20

16.09.2013, 16:53:09 via Website

Hallo AndroidPit,

Ich habe mir den Code von https://developers.google.com/drive/quickstart-android kopiert und in eine activity eingefügt. Es funktioniert soweit, dass ich gefragt werde welchen account ich verwenden möchte und das ich ein foto machen kann. Es gibt auch keinen Absturz sondern nur eine Fehlermeldung im Logcat:

109-16 16:50:58.894: W/System.err(9412): com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
209-16 16:50:58.894: W/System.err(9412): {
309-16 16:50:58.894: W/System.err(9412): "code": 403,
409-16 16:50:58.894: W/System.err(9412): "errors": [
509-16 16:50:58.894: W/System.err(9412): {
609-16 16:50:58.894: W/System.err(9412): "domain": "usageLimits",
709-16 16:50:58.894: W/System.err(9412): "message": "Access Not Configured",
809-16 16:50:58.894: W/System.err(9412): "reason": "accessNotConfigured"
909-16 16:50:58.894: W/System.err(9412): }
1009-16 16:50:58.894: W/System.err(9412): ],
1109-16 16:50:58.894: W/System.err(9412): "message": "Access Not Configured"
1209-16 16:50:58.894: W/System.err(9412): }
1309-16 16:50:58.894: W/System.err(9412): at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:113)
1409-16 16:50:58.894: W/System.err(9412): at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:40)
1509-16 16:50:58.894: W/System.err(9412): at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:423)
1609-16 16:50:58.894: W/System.err(9412): at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:343)
1709-16 16:50:58.894: W/System.err(9412): at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:460)
1809-16 16:50:58.894: W/System.err(9412): at com.example.htmleditor.DriveUpload$1.run(DriveUpload.java:99)
1909-16 16:50:58.894: W/System.err(9412): at java.lang.Thread.run(Thread.java:856)



Hier ist mein Code - vielleicht weiß jemand wo der fheler liegt bzw. was fehlt.

1package com.example.htmleditor;
2
3import java.io.IOException;
4import java.text.SimpleDateFormat;
5import java.util.ArrayList;
6import java.util.Collection;
7import java.util.Date;
8import java.util.Locale;
9
10import android.accounts.AccountManager;
11import android.app.Activity;
12import android.content.Intent;
13import android.net.Uri;
14import android.os.Bundle;
15import android.os.Environment;
16import android.provider.MediaStore;
17import android.widget.Toast;
18
19import com.google.api.client.extensions.android.http.AndroidHttp;
20import com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential;
21import com.google.api.client.googleapis.extensions.android.gms.auth.UserRecoverableAuthIOException;
22import com.google.api.client.http.FileContent;
23import com.google.api.client.json.gson.GsonFactory;
24import com.google.api.services.drive.Drive;
25import com.google.api.services.drive.DriveScopes;
26import com.google.api.services.drive.model.File;
27
28public class DriveUpload extends Activity {
29 static final int REQUEST_ACCOUNT_PICKER = 1;
30 static final int REQUEST_AUTHORIZATION = 2;
31 static final int CAPTURE_IMAGE = 3;
32
33 private static Uri fileUri;
34 private static Drive service;
35 private GoogleAccountCredential credential;
36
37 @Override
38 public void onCreate(Bundle savedInstanceState) {
39 super.onCreate(savedInstanceState);
40 Collection<String> s = new ArrayList<String>();
41 s.add(DriveScopes.DRIVE);
42 credential = GoogleAccountCredential.usingOAuth2(this, s);
43 startActivityForResult(credential.newChooseAccountIntent(), REQUEST_ACCOUNT_PICKER);
44 }
45
46 @Override
47 protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
48 switch (requestCode) {
49 case REQUEST_ACCOUNT_PICKER:
50 if (resultCode == RESULT_OK && data != null && data.getExtras() != null) {
51 String accountName = data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME);
52 if (accountName != null) {
53 credential.setSelectedAccountName(accountName);
54 service = getDriveService(credential);
55 startCameraIntent();
56 }
57 }
58 break;
59 case REQUEST_AUTHORIZATION:
60 if (resultCode == Activity.RESULT_OK) {
61 saveFileToDrive();
62 } else {
63 startActivityForResult(credential.newChooseAccountIntent(), REQUEST_ACCOUNT_PICKER);
64 }
65 break;
66 case CAPTURE_IMAGE:
67 if (resultCode == Activity.RESULT_OK) {
68 saveFileToDrive();
69 }
70 }
71 }
72
73 private void startCameraIntent() {
74 String mediaStorageDir = Environment.getExternalStoragePublicDirectory(
75 Environment.DIRECTORY_PICTURES).getPath();
76 String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.US).format(new Date());
77 fileUri = Uri.fromFile(new java.io.File(mediaStorageDir + java.io.File.separator + "IMG_"
78 + timeStamp + ".jpg"));
79
80 Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
81 cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
82 startActivityForResult(cameraIntent, CAPTURE_IMAGE);
83 }
84
85 private void saveFileToDrive() {
86 Thread t = new Thread(new Runnable() {
87 @Override
88 public void run() {
89 try {
90 // File's binary content
91 java.io.File fileContent = new java.io.File(fileUri.getPath());
92 FileContent mediaContent = new FileContent("image/jpeg", fileContent);
93
94 // File's metadata.
95 File body = new File();
96 body.setTitle(fileContent.getName());
97 body.setMimeType("image/jpeg");
98
99 File file = service.files().insert(body, mediaContent).execute();
100 if (file != null) {
101 showToast("Photo uploaded: " + file.getTitle());
102 startCameraIntent();
103 }
104 } catch (UserRecoverableAuthIOException e) {
105 startActivityForResult(e.getIntent(), REQUEST_AUTHORIZATION);
106 } catch (IOException e) {
107 e.printStackTrace();
108 }
109 }
110 });
111 t.start();
112 }
113
114 private Drive getDriveService(GoogleAccountCredential credential) {
115 return new Drive.Builder(AndroidHttp.newCompatibleTransport(), new GsonFactory(), credential)
116 .setApplicationName("HTML Editor/1.0")
117 .build();
118 }
119
120 public void showToast(final String toast) {
121 runOnUiThread(new Runnable() {
122 @Override
123 public void run() {
124 Toast.makeText(getApplicationContext(), toast, Toast.LENGTH_SHORT).show();
125 }
126 });
127 }
128}



Vielen Dank im Voraus,

Moritz Bruder

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

17.09.2013, 11:43:36 via Website

1com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
#

Du bekommst HTTP 403. Das ist das problem, wieso keine Ahnung, check mal das bs, bzw deinen Account.

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten