@me вызван анонимной ошибкой при использовании API google plus внутри проекта gwt - PullRequest
1 голос
/ 31 марта 2012

Я использую клиент javascript google api для получения информации о профиле пользователя в проекте gwt, размещенном в движке приложений Google.

В localhost данные извлекаются правильно,Я получаю JSON с профилем Google Plus.Когда я внедряю в appengine, я получаю ответ 401, «@me call by anonymous».

Вот мой код:

<script src="https://apis.google.com/js/client.js"></script>
<script type="text/javascript">
$(function() {
    auth();
});

var API_KEY = "***************************************";
var CLIENT_ID = "************.apps.googleusercontent.com";

var scopes = 'https://www.googleapis.com/auth/plus.me';

function auth() {
        var config = {
                'client_id' : CLIENT_ID,
                'scope' : scopes,
                'key' : API_KEY,
        };
        gapi.client.load('plus', 'v1', function() {
                        api.client.setApiKey(API_KEY);
                        gapi.auth.authorize(config, function() {
                            var request = gapi.client.plus.people.get({
                                    'userId' : 'me',
                            });
                            request.execute(function(resp) {
                                    console.log(resp);
                            });
                        });
        });
}

</script>

Что я пробовал:

  • вызовите api.client.setApiKey в начале.
  • создайте новый доступ к API Google с помощью консоли API Google

обновление:

Это полное сообщение об ошибке ответа:

{
  "error": {
   "code": 401,
   "message": "me called by anonymous",
   "data": [
    {
     "domain": "global",
     "reason": "authError",
     "message": "me called by anonymous",
     "locationType": "header",
     "location": "Authorization"
    }
   ]
  },
  "id": "gapiRpc"
}

Существуют и другие сообщения, которые могут быть связаны с:

Это одно из них:

Skipping duplicate osapi method definition chili.people.list on transport googleapis; others may exist, but suppressing warnings cb=gapi.loaded1 (línea 119)
Skipping duplicate osapi method definition pos.plusones.list on transport googleapis; others may exist, but suppressing warnings cb=gapi.loaded1 (línea 119)
Skipping duplicate osapi method definition chili.activities.list on transport googleapis; others may exist, but suppressing warnings cb=gapi.loaded1 (línea 119)
Skipping duplicate osapi method definition googleapis.newHttpRequest on transport googleapis; others may exist, but suppressing warnings

Этодругое:

Invalid auth token. 1025***** vs 140186****

1 Ответ

0 голосов
/ 22 апреля 2012

Я мог бы наконец решить проблему с помощью следующих настроек или шагов:

1) В консоли Google Apis я оставил пустой раздел Redirect URI и завершил JavaScriptраздел origins с URL моего сайта, повторяя его с протоколом https :

JavaScript origins:
http://example.com
https://example.com

Я поставил скрипт, который загружает API, перед тегом end body:

<script src="https://apis.google.com/js/client.js"></script>

Этот сценарий находится внутри тела, перед сценарием API:

<script type="text/javascript">

var API_KEY = "***************************************";
var CLIENT_ID = "************.apps.googleusercontent.com";

var scopes = 'https://www.googleapis.com/auth/plus.me';

function auth() {
    var scopes = 'https://www.googleapis.com/auth/plus.me';

    gapi.client.setApiKey(API_KEY);
    window.setTimeout(checkAuth, 1000);

    function checkAuth() {
        gapi.auth.authorize({
            client_id : CLIENT_ID,
            scope : scopes,
            immediate : false
        }, handleAuthResult);
    }

    function handleAuthResult(authResult) {
        if (authResult) {
            makeApiCall();
        } else {
            checkAuth();
        }
    }

    function makeApiCall() {
        gapi.client.load('plus', 'v1', function() {
            var request = gapi.client.plus.people.get({
                'userId' : 'me'
            });
            request.execute(function(resp) {
                $("#image").attr("src", resp.image.url);
            });
        });
    }

}
</script>

Затем я вызываю функцию auth (), когда пользователь нажимает, чтобы увидеть его изображение.

...