Проект PHP с Google API и JavaScript: Наследственный беспорядок

Так что я унаследовал несколько проектов на работе этого пользователя php. У меня нет опыта использования php, поэтому, конечно, я изо всех сил пытался решить проблему, которую мы нашли. На данный момент я просто пытаюсь получить идентификатор Google для тех, кто когда-либо входил в систему, когда они посещают сайт. Странно то, что иногда мой код работает отлично, и я получаю идентификатор Google, но он работает только для некоторых учетных записей, которые мы пробовали, другие просто возвращают ноль. Приведенный ниже код я просто пытаюсь выяснить, кто вошел в систему правильно, но я настолько не осведомлен о том, как все это работает, что я не могу сказать, что не так.

<!DOCTYPE html>
<html class="no-js" lang="en">

<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>Career Opportunities</title><script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="https://apis.google.com/js/client:platform.js"></script>
<script type="text/javascript">
function startUp(onSuccess, onFailure) {
gapi.client.init({
apiKey: 'API KEY',
clientId: 'CLIENTID.apps.googleusercontent.com',
scope: 'profile',
}).then(function() {
var x = gapi.auth2.getAuthInstance();
console.log("gapi.auth2.getAuthInstance() : " + x);
console.log("userId is : " + x.currentUser.get().getId());

gapi.client.load('people', 'v1', function() {
var request = gapi.client.people.people.get({
'resourceName': 'people/me',
'requestMask.includeField': 'person.phone_numbers,person.organizations,person.email_addresses,person.names'
});
console.log('request: ' + request);
request.execute(function(resp) {
console.log(resp);

});
});
});

}
gapi.load('client', startUp);
</script><script src="js/validation.js" async defer></script></head>

<body></body>

</html>

0

Решение

Вместо того, чтобы продолжать с комментариями, я сделаю несколько предложений здесь и отредактирую, как вы редактируете свой вопрос

Прежде всего, пожалуйста, скопируйте вывод вашей консоли на ваш вопрос. Это поможет нам увидеть, что происходит в коде.

редактировать 4:

Я не знаком с API-интерфейсом Google, с которым вы работаете, поэтому мой лучший совет — протестировать этот код, а если он вернется, вошедший в систему = true и иногда false, задайте новый вопрос по stackoverflow с этим упрощенным кодом. Пометьте его с помощью javascript и google api (какой бы ни был основной тег для него). Глядя на ответы как https://stackoverflow.com/a/33380879/3650835 ваш код совсем другой. Так что теперь я думаю, что вызовы API, которые вы делаете, должны быть переписаны / не вызываются в правильном порядке. Но попробуйте этот упрощенный код, иногда он показывает вход в систему, иногда нет? Если это так, то мы достаточно сузили проблему, чтобы вы могли спросить и, вероятно, получить ответ от кого-то, кто действительно знаком с API Google.

<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>Career Opportunities</title>

<script src="https://apis.google.com/js/client:platform.js"></script>
<script type="text/javascript">
$(document).ready(function() {
gapi.load('client', startUp);

function startUp(onSuccess, onFailure) {
gapi.client.init({
apiKey: 'API KEY',
clientId: 'CLIENTID.apps.googleusercontent.com',
scope: 'profile',
}).then(function() {
// here we log whether the user is signed in or not, and it changes unexpectedly
var x = gapi.auth2.getAuthInstance();
console.log(x.isSignedIn.get());
});
}
});
</script>

</head>
<body>
</body>
</html>
1

Другие решения

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

gapi.auth.authorize({
'client_id': myClientId,
'scope': 'email',
'immediate': true
}, function(authResult) {
if (authResult['status']['signed_in']) {
// Update the app to reflect a signed in user
gapi.client.load('plus','v1', function(){
var request = gapi.client.plus.people.get({'userId': 'me'});
request.execute(function(resp) {

var userId = '<?php echo $_SESSION["userID"]; ?>';

if(userId == resp.id) {
onSuccess();
}
else {
onFailure();
}
});
});
}
else {
onFailure();
}
});
0

По вопросам рекламы [email protected]