我想说我想通过javascript / python / localhost 上的任何从谷歌获取授权令牌。我怎样才能做到这一点?在" https://accounts.google.com/o/oauth2/auth上发送授权请求后?..."用户必须允许它,但我的脚本无法获得令牌(因为谷歌无法重定向到localhost)。或者是吗?
答案 0 :(得分:0)
过去几天我一直在处理OAuth,而且我不确定我是否100%理解它......但我会尽力传达我所学到的知识。
这是我本周早些时候提出问题的代码......
的index.html
<!doctype html>
<html>
<head>
</head>
<body>
<p>Tripping all day...</p>
<p id="output"></p>
<script src="auth.js"></script>
<script type="text/javascript">
function init() {
console.log('init');
checkAuth();
}
</script>
<script src="https://apis.google.com/js/client.js?onload=init"> </script>
<script>
document.getElementById("output").innerHTML = "Coooooorrrrrraaaaalll";
</script>
</body>
</html>
auth.js
var CLIENT_ID = 'xxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com';
var SCOPES = 'email';
function handleAuth(authResult) {
console.log('handle auth');
console.log(authResult);
}
function checkAuth() {
console.log('check auth');
gapi.auth.authorize({client_id: CLIENT_ID, scope: SCOPES, immediate: false, cookie_policy: 'single_host_origin'}, handleAuth);
}
这使用Google提供的Gapi javascript客户端。当我调用gapi.auth.authorize并将其设置为我在开发者控制台中设置的客户端ID时,它会向我显示Google帐户授权弹出窗口,然后我相信Gapi对象有一个方法可以将OAuth令牌添加到Gapi对象本身。顺便说一下,在设置我的凭据时,我没有包含重定向URI。
在我获得授权调用后,我可以调用oauth2.userinfo.get()来获取我的令牌以用于他们的API。
var request = gapi.client.oauth2.userinfo.get();
对于locahost,我只使用了我的开发服务器的IP地址,该服务器没有附加顶级域名。 Localhost的工作方式可能相同吗?