Я продолжаю получать ошибку http 403 для Google Oauth 2.0 (титановый сплав)

#javascript #titanium-mobile #titanium-alloy

#javascript #titanium-мобильный #titanium-alloy

Вопрос:

Я создаю приложение для iPhone и пытаюсь получить информацию о пользователе после входа в систему с помощью Google, но я продолжаю получать ошибку 403. Я использую Google Oauth API, который я нашел здесь . Я делаю что-то не так здесь? Ниже приведен поток и код. Не говоря уже о том, что я использую Titanium.

1) Пользователь открывает журналы приложений с помощью Google.

2) После успешной аутентификации пользователь переходит на домашний просмотр, где он видит свой профиль.(Есть и другие вещи, но они идут по одному за раз)

Я уже включил API в Google и сгенерировал ключи и все такое. Я что-то упускаю или делаю шаг неправильно?

 var GoogleAuth = Alloy.Globals.GoogleAuth;
var googleAuth = new GoogleAuth({
    clientId : 'clientxxxxxxid',
    clientSecret : 'secret',
    propertyName : 'profile',
    scope : ['https://www.googleapis.com/auth/plus.login','email']
});

function loginWithGoogle(){
    googleAuth.isAuthorized(
    function(){
        var client = Ti.Network.createHTTPClient({

            onerror: function(d){Ti.API.error(d);},
            timeout:5000
        });
        //alert(googleAuth.getAccessToken());
        var accessToken =  googleAuth.getAccessToken();
        client.setRequestHeader("Authorization","Bearer " accessToken);
        client.open('GET','https://www.googleapis.com/plus/v1/people/me?key=_API_KEY_');
        client.send();
        client.onload = function(d){
            alert(d);
        };
        //https://www.googleapis.com/plus/v1/people/me
    },
    function(){
    googleAuth.authorize(function(){
        var client = Ti.Network.createHTTPClient({

            onerror: function(d){
                Ti.API.error(d);
            },
            timeout:5000
        });
        //alert(googleAuth.getAccessToken());
        var accessToken = googleAuth.getAccessToken();
        client.setRequestHeader("Authorization","Bearer " accessToken);
        client.open('GET','https://www.googleapis.com/plus/v1/people/me?key=_API_KEY_');
        client.send();
        client.onload = function(d){
            alert(d);
        };
        //https://www.googleapis.com/plus/v1/people/me
    }); 
    });


}
  

Ответ №1:

Я просмотрел ваш код…

Это:

 client.open('GET','https://www.googleapis.com/plus/v1/people/me?key=_API_KEY_');
  

должно быть так:

 client.open('GET','https://www.googleapis.com/plus/v1/people/me?access_token='   googleAuth.getAccessToken());
  

Комментарии:

1. я исправил код, как и предлагал u, теперь я получаю {«type»:»load», «source»:{«cache»:false}, «code»: 0, «success»:true} в качестве ответа.

2. Я ожидаю ответа от профиля пользователя, в котором я могу получить его адрес электронной почты, фотографию, имя и фамилию и т. Д.

3. Пожалуйста, прочитайте эту документацию: developers.google.com/accounts/docs/OAuth2InstalledApp . Вам нужно установить область действия на правильные значения… область действия: [‘ googleapis.com/auth/plus.login ‘,’профиль’] (аналогично этому)