我试图建立一个基于Express.js的网站,当我导航到某个页面,抓取相册列表,链接,id,等等。我有一个服务帐户与所有权限。我的Javascript是:
const oauth2Client = new google.auth.OAuth2(
config.serviceAccount.client_id,
config.oAuthclientSecret,
config.oAuthCallbackUrl
);
google.options({auth: oauth2Client});
function getAlbumList(){
var xhr = new XMLHttpRequest();
var url = "https://photoslibrary.googleapis.com/v1/albums"
xhr.open("GET",url,true);
xhr.onreadystatechange = function () {
console.log("making xhr")
if (xhr.readyState == 4 && xhr.status == 200) {
console.log(xhr);
}
}
xhr.addEventListener('error',function(){
console.log(xhr.statusMessage)
console.log("xhr.status is ", xhr.status )
console.log("ERROR");
})
xhr.addEventListener('timeout',function(){
console.log("SERVER TIMEOUT")
})
// Sending our request
xhr.send();
}
但是,我甚至从来没有得到回应。我确实有一个服务帐户,我的凭据是:
{ "type": "service_account",
"project_id": "myProj",
"private_key_id": "8dxxxxxx46",
"private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvwIBADANBgkqhkiG9w0BAQExxxxxxxxxQ==\n-----END PRIVATE KEY-----\n",
"client_email": "ihfphotograb@myproj.iam.gserviceaccount.com",
"client_id": "10xxxxxxxxx6451",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/proj%40myproj.iam.gserviceaccount.com"}
我看过this,但他们没有告诉你如何获得令牌,当我看网络选项卡,看到请求和参数通过。我有const {google} = require('googleapis')
,但我不知道如何获得令牌。
我希望服务应用程序做所有的身份验证,所以我的网站的访问者可以看到照片没有身份验证。
2条答案
按热度按时间x7yiwoj41#
您应该将令牌添加到您的API请求中,否则,您将得到
401
unauthorized
错误。在index.js文件的底部添加以下代码,使用客户端ID和Secret而不是占位符:
大家可以看一下更详细的示例代码here。
hgncfbus2#
在每次请求之前,您需要使用之前生成并保存在某个变量中的令牌,或者在每次向API发送请求时获取刷新令牌。
请遵循此教育课程:
https://hmh.engineering/how-to-get-oauth-access-token-and-retrieve-data-from-google-apis-using-postman-9a95ffe030ae