#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 ‘,’профиль’] (аналогично этому)