所以我在工作中继承了一些用户 php.ini 的项目。我没有使用 php 的经验,所以当然一直在努力解决我们发现的问题。此时,我只是想获取访问该网站时恰好登录的人员的 google id。奇怪的是,有时我的代码运行得很好,并且我得到了 google id,但它只适用于我们尝试过的某些帐户,其他帐户只是返回 null。下面的代码我只是想让谁正确登录,但我对这一切是如何工作的一无所知,以至于我不知道出了什么问题。
<!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>
这是当它出于某种原因不喜欢用户时出现的错误。编辑:此错误出现在控制台中。该页面什么也不做,只是显示谁通过 console.log 登录。
代码:401
数据:未定义
错误:{代码:401,数据:未定义,消息:“请求没有有效的身份验证凭据。”}
消息:“请求没有有效的身份验证凭据。”
原型(prototype):对象
我尝试了很多不同的事情,我认为这段代码将是一堆不同方法的集合,抱歉哈哈。
编辑-添加了更多console.logs-编辑上面的代码以反射(reflect)这一点
bobtest.php:101 gapi.auth2.getAuthInstance() : [object Object]
bobtest.php:102 userId is : null
bobtest.php:108 request: [object Object]
cb=gapi.loaded_0:148 GET https://content-people.googleapis.com/v1/people/me?requestMask.includeField=person.phone_numbers&key=401 ()
zu @ cb=gapi.loaded_0:148
n @ cb=gapi.loaded_0:148
Cu @ cb=gapi.loaded_0:149
(anonymous) @ cb=gapi.loaded_0:149
g @ cb=gapi.loaded_0:123
c @ cb=gapi.loaded_0:119
postMessage (async)
(anonymous) @ cb=gapi.loaded_0:122
setTimeout (async)
call @ cb=gapi.loaded_0:122
call @ cb=gapi.loaded_0:134
l @ cb=gapi.loaded_0:195
(anonymous) @ cb=gapi.loaded_0:194
g @ cb=gapi.loaded_0:126
c @ cb=gapi.loaded_0:122
postMessage (async)
(anonymous) @ cb=gapi.loaded_0:119
setTimeout (async)
call @ cb=gapi.loaded_0:119
call @ cb=gapi.loaded_0:131
_.Xj.Rl @ cb=gapi.loaded_0:149
_.Xj.kc @ cb=gapi.loaded_0:149
window.startup @ proxy.html?usegapi=1&jsh=m%3B%2F_%2Fscs%2Fapps-static%2F_%2Fjs%2Fk%3Doz.gapi.en.tZDXb_qbHrc.O%2Fm%3D__features__%2Fam%3DAQ%2Frt%3Dj%2Fd%3D1%2Frs%:8
(anonymous) @ googleapis.proxy.js?onload=startup:10
ba @ googleapis.proxy.js?onload=startup:3
b @ googleapis.proxy.js?onload=startup:10
Y.r.(anonymous function) @ googleapis.proxy.js?onload=startup:10
Y.x.(anonymous function) @ googleapis.proxy.js?onload=startup:11
(anonymous) @ cb=gapi.loaded_0:1
bobtest.php:110 {code: 401, data: undefined, message: "The request does not have valid authentication credentials.", error: {…}}
编辑3添加了更多console.logs
----STARTING CLIENT.INIT
bobtest.php:101 ----CLIENT.INIT SUCCESSFUL
bobtest.php:103 gapi.auth2.getAuthInstance() : [object Object]
bobtest.php:104 userId is : null
bobtest.php:110 ----CLIENT.LOAD SUCCESSFUL
bobtest.php:111 request: [object Object]
cb=gapi.loaded_0:148 GET https://content-people.googleapis.com/v1/people/me?requestMask.includeField=person.phone_numbers%2Cperson.organizations%2Cperson.email_addresses%2Cperson.names&key=AIzaSyATLxJElwrDoYaBJtcWCOOP4JI7CUKlXUk 401 ()
zu @ cb=gapi.loaded_0:148
n @ cb=gapi.loaded_0:148
Cu @ cb=gapi.loaded_0:149
(anonymous) @ cb=gapi.loaded_0:149
g @ cb=gapi.loaded_0:123
c @ cb=gapi.loaded_0:119
postMessage (async)
(anonymous) @ cb=gapi.loaded_0:122
setTimeout (async)
call @ cb=gapi.loaded_0:122
call @ cb=gapi.loaded_0:134
l @ cb=gapi.loaded_0:195
(anonymous) @ cb=gapi.loaded_0:194
g @ cb=gapi.loaded_0:126
c @ cb=gapi.loaded_0:122
postMessage (async)
(anonymous) @ cb=gapi.loaded_0:119
setTimeout (async)
call @ cb=gapi.loaded_0:119
call @ cb=gapi.loaded_0:131
_.Xj.Rl @ cb=gapi.loaded_0:149
_.Xj.kc @ cb=gapi.loaded_0:149
window.startup @ proxy.html?usegapi=1&jsh=m%3B%2F_%2Fscs%2Fapps-static%2F_%2Fjs%2Fk%3Doz.gapi.en.tZDXb_qbHrc.O%2Fm%3D__features__%2Fam%3DAQ%2Frt%3Dj%2Fd%3D1%2Frs%3DAGLTcCOgQjGru3ruZo70XwAerRmnfOfOeA:8
(anonymous) @ googleapis.proxy.js?onload=startup:10
ba @ googleapis.proxy.js?onload=startup:3
b @ googleapis.proxy.js?onload=startup:10
Y.r.(anonymous function) @ googleapis.proxy.js?onload=startup:10
Y.x.(anonymous function) @ googleapis.proxy.js?onload=startup:11
(anonymous) @ cb=gapi.loaded_0:1
bobtest.php:113 ----REQUEST.EXECUTE CALLBACK
bobtest.php:114 {code: 401, data: undefined, message: "The request does not have valid authentication credentials.", error: {…}}
编辑4添加了成功的控制台日志
----STARTING CLIENT.INIT
bobtest.php:101 ----CLIENT.INIT SUCCESSFUL
bobtest.php:103 gapi.auth2.getAuthInstance() : [object Object]
bobtest.php:104 userId is : 9999(actually shows id, just removed just in case)
bobtest.php:110 ----CLIENT.LOAD SUCCESSFUL
bobtest.php:111 request: [object Object]
bobtest.php:113 ----REQUEST.EXECUTE CALLBACK
bobtest.php:114 {resourceName: "people/9999999", etag: "%999999=", names: Array(1), emailAddresses: Array(1), result: {…}}
最佳答案
我不会继续发表评论,而是会在这里提出一些建议,并在您编辑问题时进行编辑。
首先,请将控制台的输出复制到您的问题中。这将帮助我们了解代码中到目前为止发生了什么。
编辑4:
我不熟悉您正在使用的google api,所以我最好的建议是测试这段代码,如果它有时返回logged in = true,有时返回false,请使用这个简化的方法在stackoverflow上提出一个新问题代码。使用 javascript 和 google api 对其进行标记(无论主标记是什么)。查看类似 https://stackoverflow.com/a/33380879/3650835 的答案你的代码完全不同。所以我现在的猜测是,您进行的 api 调用需要重写/未按正确的顺序调用。但是尝试一下这个简化的代码,它是否有时显示已登录,有时不显示?如果是这样,那么我们已经缩小了问题的范围,足以让您提出问题,并且可能会得到真正熟悉 Google API 的人的答复。
<!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>
关于javascript - 使用 google API 和 javascript 的 PHP 项目 : Inherited Mess,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48306754/