2016-04-01 2 views
2

Я пытаюсь загрузить фотографии из приложения Android в Picasa. Я зарегистрировался с помощью Google Single Sign On и получил там токен доступа.Загрузить Picasa API: Получение 403/Недействительный токен

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

Я могу сделать GET-вызовы, которые извлекают общедоступные альбомы и фотографии в этих альбомах, но не POST-запросы.

Вот как я пытаюсь загрузить фото из памяти

String url = "https://picasaweb.google.com/data/feed/api/user/" + mPreferences.getUsername() + "/albumid/" + mAlbumID; 
HttpClient httpClient = new DefaultHttpClient(); 

File file = new File("/storage/emulated/0/Pictures/Screenshots/scrn.png"); 

HttpPost httpPost = new HttpPost(url); 
httpPost.setHeader("GData-Version", "2"); 
httpPost.setHeader("Content-type", "image/jpeg"); 
httpPost.setHeader("Slug", "plz-to-love-realcat.jpg"); 
httpPost.setHeader("Authorization", "GoogleLogin auth=" + mPreferences.getAccessToken()); 

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) { 
    e.printStackTrace(); 
} catch (ClientProtocolException e) { 
    e.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

ответ

0

Законченное решение, изменив

httpPost.setHeader("Authorization", "GoogleLogin auth=" + mPreferences.getAccessToken()); 

в

httpPost.setHeader("Authorization", "OAuth " + mPreferences.getAccessToken());