Получение профиля пользователя с помощью Google oauth2 - PullRequest
3 голосов
/ 02 октября 2011

Я пытаюсь получить информацию о профиле пользователя при входе в систему с помощью google-oauth2.Пользователь успешно входит в систему, и я могу получить access_token и обновить токен, когда это необходимо.Хотя мне не удалось получить какую-либо информацию о пользователе, несмотря на то, что я читал документы и пытался часами.

Из раздела «Извлечение профилей» руководства разработчика :

https://www.google.com/m8/feeds/profiles/domain/domainName/full

должно быть достаточно.я пробовал с "gmail.com", "google.com", "gmail", "google", "orkut", "orkut.com", myregisteredappsdomainname (и .com) в качестве domainName.я также попробовал это с

https://www.google.com/m8/feeds/profiles/domain/domainName/full?access_token=access_token_for_user

, все, что мне удалось получить, это ошибка 401, где написано «Это ошибка».Что касается ошибки 401, я обновил токен и попробовал снова с новым токеном, но продолжал получать 401 с.

Как я могу получить информацию профиля и адрес изображения для пользователя при входе в систему?

Ответы [ 4 ]

2 голосов
/ 21 марта 2012

Область, которую вы ищете:

https://www.googleapis.com/oauth2/v1/userinfo

На этот вопрос уже отвечали здесь

1 голос
/ 25 октября 2011

Я получал похожие ошибки при запросе профилей даже после правильного определения области действия и получения токенов доступа и т. Д. Для меня было важно включить версию API в мои запросы.Смотрите здесь для получения дополнительной информации http://code.google.com/googleapps/domain/profiles/developers_guide.html#Versioning

0 голосов
/ 06 августа 2014

Возможно, немного поздно, но это может быть кому-то полезно. Ниже приведен рабочий код, который я написал для получения профиля пользователя gplus

В HTML ниже разметки будет отображаться кнопка входа goolge

<span id="signinButton">
    <span
      class="g-signin"
      data-callback="signinCallback"
      data-clientid="YOUR GPLUS CLIENT ID"
      data-cookiepolicy="single_host_origin"
      data-scope="email">
    </span>
</span>   

Ниже приведен сценарий Java

 var access_token;
/**
 * Called when the Google+ client library reports authorization status.
 */
function signinCallback(authResult) {
    access_token = authResult.access_token;

    gapi.client.load('plus', 'v1', function () {
        gapi.client.plus.people.get({ userId: 'me' }).execute(printProfile);
    });
}

/**
 * Response callback for when the API client receives a response.
 *
 * @param resp The API response object with the user email and profile information.
 */
function printProfile(resp) {
    if (resp.code != 403) {
     console.log('name:' + access_token.givenname);
     console.log('last name:' + access_token.lastname);
     console.log('email:' + access_token.emails[0]);
     console.log('gender:' + access_token.gender);
     console.log('profile image url:' + access_token.image.url);
    }
}

Пожалуйста, убедитесь, что вы загружаете gav api javascript внутри тега body, как показано ниже

            <script type="text/javascript">
                (function () {
                    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
                    po.src = 'https://apis.google.com/js/platform.js';
                    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
                })();
</script>

Чтобы обработать выход из системы, обратитесь к ответу, который я предоставляю в приведенной ниже ссылке, вам нужно будет сохранить access_token в бэкэнде, чтобы при вызове выхода из системы это использовалось, в моем случае я сохранил в сеансе и получил вызов ajax gapi.auth.signOut (); не работает я потерян

0 голосов
/ 16 января 2012

Эй, почему бы тебе не взглянуть на код, указанный на: http://www.codeproject.com/KB/aspnet/OAuth4Client.aspx

Это определенно помогает тебе. На самом деле проект представляет собой площадку для отправки правильного заголовка для правильных конечных точек.

...