Pracuję nad aplikacją na Androida i muszę uzyskać informacje "mnie" od google, ale zawsze otrzymuję odpowiedź kod 401 lub 403. Co robię źle? Oto mój kod:Jak zadzwonić pod https://www.googleapis.com/plus/v1/people/me pod adresem google
private static final String GOOGLE_AUTH_TOKEN_TYPE = "oauth2:https://www.googleapis.com/auth/plus.me";
uzyskać token OAuth przez (uwaga ... Kod poniżej jest skrócona):
Account googleAccount = (AccountManager) getSystemService(ACCOUNT_SERVICE).getAccountsByType("com.google")[0];
final Bundle bundle = manager.getAuthToken(googleAccount, GOOGLE_AUTH_TOKEN_TYPE, true, null, null).getResult();
String authToken = bundle.getString(AccountManager.KEY_AUTHTOKEN);
tej pory tak dobrze ... teraz mam tak token wszystko tu wygląda dobrze.
teraz uzyskać informacje o mnie:
String GOOGLE_ME_URL = "https://www.googleapis.com/plus/v1/people/me";
final DefaultHttpClient client = new DefaultHttpClient();
final HttpGet request = new HttpGet(GOOGLE_ME_URL);
request.addHeader("Authorization", "OAuth=" + authToken);
final HttpResponse response = client.execute(request);
daje ten kod odpowiedzi 401.
Próbowałem również:
final DefaultHttpClient client = new DefaultHttpClient();
final HttpGet request = new HttpGet(GOOGLE_ME_URL + "?access_token=" + authToken);
final HttpResponse response = client.execute(request);
Daje kod odpowiedzi 403 - coś w stylu „dzienny limit przekroczone. Zarejestruj się ".
Co robię źle? co przeoczyłem? Jak to zrobić?
Dzięki
// Modyfikacje poniżej Niektóre bardziej dochodzenie: Dodałem projektu do code.google.com/apis/console i wziął klucz wygenerowany stamtąd i wstawić do adresu URL, takich jak: https://www.googleapis.com/plus/v1/people/me?key=my_generated_key&access_token= "+ authToken. Teraz połączenie działa dobrze i otrzymuję odpowiedź 200 z prawidłowymi informacjami, ale naprawdę nie chcę używać tej metody, jeśli nie muszę i zgodnie z Google nie powinienem" Jeśli żądanie wymaga autoryzacji (np. Żądanie prywatnych danych osoby), musi zawierać token OAuth 2.0. Może ona również zawierać klucz API, ale nie muszą.”- od developers.google.com/+/api/oauth
Inną rzeczą. Gdy próbuję kolejny url podobny «https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=»+ authToken działa dobrze
Cześć i dzięki za pomoc. Masz na myśli, że nie mogę użyć DefaultHttpClient i HttpGet? Czy możesz zamiast tego opublikować, jak powinienem to zrobić? – user1140596
Inne połączenia https, takie jak h t t p s: // w w w.googleapis.com/oauth2/v1/tokeninfo?access_token=my_authToken działa poprawnie z tym samym kodem. Zobacz moją edycję w głównym poście. – user1140596
Tak, przepraszam, może masz rację. Wpadłem kiedyś na problem z certyfikatem i było to prawdziwe kłopotliwe. Musiałem zrobić kilka rzeczy, żeby to działało, ale teraz widzę, że twój problem jest inny. W przypadku rekordów, oto co musiałem zrobić: http://stackoverflow.com/questions/2012497/accepting-a-certyfikat-for-https-on-android – Scalarr