2013-02-17 3 views
0

У меня возникли некоторые проблемы с тем, чтобы Google Analytics работал в моем приложении Android, используя службы Google Play. Во-первых, я использовал образцы, поставляемые с библиотекой, чтобы получить нижеПолучение информации о пользователе в Android Google Authentication с настройкой проверки на стороне сервера

GoogleAuthUtil.getToken(getActivity(), mEmail,"oauth2:https://www.googleapis.com/auth/userinfo.profile"); 

маркер, используя сферу, то я использовал маркер, чтобы получить более подробную информацию о пользователе:

URL url = new URL("https://www.googleapis.com/oauth2/v1/userinfo?access_token=" + token); 
HttpURLConnection con = (HttpURLConnection) url.openConnection(); 

Это работало. Затем я использовал сообщение Verifying Back-End Calls from Android Apps в блоге Google Developers для аутентификации пользователей приложения на моем веб-сервере. Поэтому я заменил сферу getToken с

audience:server:client_id:<webapp_clientId_for_localhost>.apps.googleusercontent.com 

и использовал подобную проверку с одной в статье для проверки аудитории и ClientId (Android идентификатор клиента) на стороне сервера. Это также сработало, но если я попытаюсь получить больше информации о пользователе (имя и фамилия), либо из приложения Android, либо из веб-приложения, используя API-интерфейс userinfo, я получаю:

{"error" : {"errors": [" " domain ":" global ", " reason ":" authError ", " message ":" "Разрешение"}], "код": 401, "сообщение": "недействительные учетные данные"}}

код я использую:

URL url = new URL("https://www.googleapis.com/oauth2/v1/userinfo"); 
HttpURLConnection con = (HttpURLConnection) url.openConnection(); 
con.setRequestProperty("Authorization", "OAuth " + token); 
con.setRequestProperty("ContentType", "application/json; charset=UTF-8"); 

Любая идея, почему userinfo не работает? Есть ли что-то еще, что я должен добавить в область?

ответ

3

Токен, используемый для проверки подлинности, предназначен для вашего сервера, в то время как один с oauth2: предназначен для Google. На данный момент не существует механизма для запроса обоих токенов одновременно, поэтому вам нужно сделать два вызова в GoogleAuthUtil. Вы должны иметь возможность запрашивать оба (по одному за раз) после одного шага согласия. На практике токен oauth2: необходимо реже использовать, поскольку вы можете связать данные профиля пользователя с учетной записью, которую у вас есть на своем домашнем сервере.

+0

Да, это то, что я закончил делать. –

+0

Эй, @breno, это работало для меня, но всего несколько дней назад оно перестало работать, и теперь оно вызывает эту ошибку com.google.android.gms.auth.GoogleAuthException: Unknown. Любая идея почему? Что-то не так с моими областями? https://gist.github.com/lawloretienne/7351151 – toobsco42

+0

К сожалению, этого вопроса не заметил. Вы все еще испытываете проблему? – breno