Я разрабатываю приложение для Android и вам нужно получить информацию о «мне» из Google, но я всегда получаю в любом ответе код 401 или 403. Что я делаю неправильно? Вот мой код:Как позвонить https://www.googleapis.com/plus/v1/people/me в google
private static final String GOOGLE_AUTH_TOKEN_TYPE = "oauth2:https://www.googleapis.com/auth/plus.me";
Я получаю маркер OAuth путем (примечание ... ниже код укорачивается):
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);
До сих пор так хорошо ... У меня теперь есть маркер так здесь все выглядит хорошо.
Теперь получить информацию мне:
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);
Это дает код ответа 401.
Я также попытался:
final DefaultHttpClient client = new DefaultHttpClient();
final HttpGet request = new HttpGet(GOOGLE_ME_URL + "?access_token=" + authToken);
final HttpResponse response = client.execute(request);
Это дает код ответа 403 - Что-то вроде «Дейли предел превышен. Пожалуйста, зарегистрируйтесь ».
Что я делаю неправильно? что я пропустил? Как это сделать?
Благодаря
// редактирует ниже Некоторые больше исследований: Я добавил проект в code.google.com/apis/console и взял ключ, созданный оттуда и поместить в URL, как: https://www.googleapis.com/plus/v1/people/me?key=my_generated_key&access_token= "+ authToken. Теперь звонок работает нормально, и я получаю ответ 200 с правильной информацией. Но я действительно не хочу использовать этот метод, если мне не нужно и в соответствии с google мне не нужно" Если для запроса требуется авторизация (например, запрос личных данных пользователя), он должен включать токен OAuth 2.0. Он также может включать в себя ключ API, но он не должен.»- от developers.google.com/+/api/oauth
Другое дело:. Если я попробовать другой URL, как „https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=“+ authToken он работает отлично
Привет и спасибо за вашу помощь. Вы имеете в виду, что я не могу использовать DefaultHttpClient и HttpGet? Можете ли вы опубликовать, как я должен это делать? – user1140596
Другие вызовы https, такие как h t t p s: // w w w.googleapis.com/oauth2/v1/tokeninfo?access_token=my_authToken работает отлично с тем же кодом. См. Мое редактирование в главном сообщении – user1140596
Да, извините, возможно, вы правы. Некоторое время назад я столкнулся с проблемой сертификата, и это была настоящая проблема. Я должен был сделать несколько вещей, чтобы заставить его работать, но теперь я вижу, что ваша проблема другая. Для записей, вот что я должен был сделать: http://stackoverflow.com/questions/2012497/accepting-a-certificate-for-https-on-android – Scalarr