我正在尝试通过JavaScript从Google相册加载相册,但是我不了解api的工作原理,因此我开始阅读Google Photos API,但是没有运气。我可以按照代码参考获取自己相册的照片列表吗?
我找到了,但是没用
<script>
var scopeApi = ['https://www.googleapis.com/auth/photoslibrary', 'https://www.googleapis.com/auth/photoslibrary.readonly', 'https://www.googleapis.com/auth/photoslibrary.readonly.appcreateddata'];
function onAuthPhotoApiLoad() {
window.gapi.auth.authorize(
{
'apiKey': 'MY_API_KEY',
'client_id': "MY_CLIEND_ID",
'scope': scopeApi,
'immediate': false
},
handlePhotoApiAuthResult);
}
function handlePhotoApiAuthResult(authResult) {
if (authResult && !authResult.error) {
oauthToken = authResult.access_token;
GetAllPhotoGoogleApi();
}
}
function GetAllPhotoGoogleApi() {
gapi.client.request({
'path': 'https://photoslibrary.googleapis.com/v1/albums',
'method': 'POST'
}).then(function (response) {
console.log(response);
}, function (reason) {
console.log(reason);
});
}
onAuthPhotoApiLoad();
答案 0 :(得分:0)
在开发Photos synching script的过程中,我花了几天的时间研究和测试Oauth 2.0 documentation。需要花很多钱,但是希望这个Cliff-notes版本会有所帮助:
应用设置,您首先需要在console.developers.google.com/通过开发者控制台获取应用配置,并确保共享照片数据。
您将获得一个如下所示的JSON文件
{"installed":{
"client_id":"xxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com",
"project_id":"xxxx-xxxxxxxx-123456",
"auth_uri":"https://accounts.google.com/o/oauth2/auth",
"token_uri":"https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs",
"client_secret":"xxxxxxxxxxxxxxxxxxxxxxxx",
"redirect_uris":["urn:ietf:wg:oauth:2.0:oob","http://localhost"]
}}
请求授权代码-然后,您需要编写使用这些值来获取授权令牌的代码-基本上是一个字符串,指示用户已允许您的应用程序访问其数据。 使用查询字符串中的以下值将请求发送到auth_uri端点:
授权往返行程:将此组成的URI发送到用户的浏览器将使他们能够选择Google帐户并显示所请求的范围。提交该表单后,它将使用querystring(Method = GET)值重定向到您的redirect_uri:
获取一个access_token 最后,您交换了OAuth AccessToken的授权代码,该代码将放入所有API请求的HTTP标头中。该请求从第1步转到token_uri,并具有以下请求正文(Method = POST)参数:
使用访问令牌。该请求的响应将包含一个access_token和一个refresh_token。您可以立即在API请求的HTTP标头中使用短暂的access_token。存储长期存在的refresh_token,以便无需重新授权即可获取新的access_token。
这就是要点。您可以看一下我的Powershell脚本,以获取授权和身份验证流程的示例,尽管其余部分有些漏洞百出且不完整,但它们仍然有效。分页浏览专辑有时会出现401错误。