Occured error(return 403 Forbidden) when upload a Photo without metadata to Picasa web album. (Memo: it'susing an OAuth2.0, "userId" is not gmail adress[numerical id]) i don't know occasion. anybody please technical support thanks
public String setdData(Context context, String filePath, String userId, String albumId, String accessToken) {
// new ImageUploader(context, filePath, filePath).run();
String url = "https://picasaweb.google.com/data/feed/api/user/" + userId + "/albumid/"
+ albumId;
HttpClient httpClient = new DefaultHttpClient();
File file = new File(filePath);
HttpPost httpPost = new HttpPost(url);
httpPost.setHeader("GData-Version", "2");
// httpPost.addHeader("MIME-version", "1.0");
httpPost.setHeader("Content-type", "image/jpeg");
httpPost.setHeader("Slug", "plz-to-love-realcat.jpg");
// httpPost.addHeader("Content-Length", String.valueOf(file.length()));
httpPost.setHeader("Authorization", "GoogleLogin auth=" + accessToken);
// httpPost.setHeader("Authorization", "OAuth " + accessToken);
InputStreamEntity reqEntity;
org.apache.http.HttpResponse response;
try {
reqEntity = new InputStreamEntity(new FileInputStream(file), file.length());
String CONTENTTYPE_BINARY = "binary/octet-stream";
reqEntity.setContentType(CONTENTTYPE_BINARY);
reqEntity.setChunked(true);
httpPost.setEntity(reqEntity);
response = httpClient.execute(httpPost);
Log.d("Picasa Upload", "STATUS CODE : " + response.getStatusLine().getStatusCode());
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
I'm assuming that your accessToken is not null...
This is my code and it works for me:
public boolean setdData(Context context, String filePath, String userId, String albumId, String accessToken) {
boolean success = false;
Bitmap bitmap = BitmapFactory.decodeFile(filePath);
if (bitmap != null) {
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 87, baos);
byte[] data = baos.toByteArray();
ByteArrayInputStream inputStream = new ByteArrayInputStream(data);
HttpRequestFactory requestFactory = new NetHttpTransport().createRequestFactory();
InputStreamContent content = new InputStreamContent("image/jpeg", inputStream);
HttpRequest request = requestFactory.buildPostRequest(new genericUrl("https://picasaweb.google.com/data/feed/api/user/"+userId+"/"+albumId+"/default"), content);
GoogleHeaders headers = new GoogleHeaders();
String fileName = "Whatever...";
headers.setSlugFromFileName(fileName);
headers.setAuthorization("OAuth " + accessToken);
request.setHeaders(headers);
request.execute().ignore();
// Success!
success = true
} catch (IOException e) {
}
}
return success;
}
To make this code work, you will need to include some libraries.
I used these:
google-http-client-1.10.2-beta.jar
google-api-client-1.10.2-beta.jar
google-oauth-client-1.10.0-beta.jar
jsr305-1.3.9.jar
guava-11.0.1.jar
You can find them here:
http://code.google.com/p/google-api-java-client/downloads/detail?name=google-api-java-client-1.10.2-beta.zip