我已经翻遍了谷歌关于GoogleDrive SDK和Drive API的所有文档,但我无法找到是否有一种方法可以在不使用oauth2的情况下连接到特定的GoogleDrive。
这与Mashery以及Twilio所允许的许多API的功能相似。只有API密钥,然后您可以访问。
我真的只需要知道这是否可能,所以我要么继续追求,要么离开它,尝试一些不同的东西。
Google API实际上只通过使用承载
令牌的oauth2.0工作。
但是您可以从GCP服务帐户的JWT令牌中获得承载
令牌。由于通过JWT的OAuth是自动的,因此不涉及用户交互。
只需创建一个服务帐户,生成JSON格式的密钥,并与该服务帐户“共享”驱动器文件夹(xxxxx@yyyyy.iam.gserviceaccount.com
)。
{
"type": "service_account",
"project_id": "<skip>",
"private_key_id": "<skip>",
"private_key": "-----BEGIN PRIVATE KEY-----\n <skip> \n-----END PRIVATE KEY-----\n",
"client_email": "<skip>@<skip>.iam.gserviceaccount.com",
"client_id": "<skip>",
"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/<skip>%40<skip>.iam.gserviceaccount.com"
}
在Go中列出文件的示例:
package main
import (
"fmt"
"log"
"golang.org/x/net/context"
"google.golang.org/api/drive/v3"
"google.golang.org/api/option"
)
func main() {
srv, err := drive.NewService(context.Background(), option.WithCredentialsFile("key.json"))
if err != nil {
log.Fatal("Unable to access Drive API:", err)
}
r, err := srv.Files.List().PageSize(100).Fields("nextPageToken, files").Do()
if err != nil {
log.Fatal("Unable to list files:", err)
}
fmt.Println("Files:")
for _, i := range r.Files {
fmt.Printf("%v (%v) %v %v\n", i.Name, i.Id, i.MimeType, i.Parents)
}
}
产出:
Files:
Test (1TMx<skip>SoYJ5) application/vnd.google-apps.folder []
Test.txt (1Ele<skip>Fh98n) text/plain [1TMx<skip>SoYJ5]
Test2.txt (3ce9x<skip>lsWds) text/plain [1TMx<skip>SoYJ5]
我用Spring Security和OAuth2保护了我的Spring REST API,我可以成功地检索令牌并访问我的API。我的应用程序自定义了OAuth2客户端。 当我添加第二个antmatcher/anonymous时,它就无法工作,而且它也没有真正表达我的意图--例如,我不想对GETs进行匿名访问,而是在POSTs上进行身份验证(使用很容易做到)。 如何使OAuth2身份验证可选?
我试图创建spring rest服务,它是由我自己的oauth2资源服务器自动引诱的。我创建了资源服务器: {“error”:“server_error”,“error_description”:“java.io.NotSerializableException:org.springframework.security.crypto.bcrypt.bcryptPasswordenCoder”} 在
我对spring security&oauth2相当陌生。作为学习的一部分,我试图设置一个OAuth2授权服务器,并保护RESTendpoint免受未经授权的访问。 代码 资源服务器 ProductController.java 未经授权API可以正常工作 如果我们只使用权限(@preauthorize(“hasauthorize('...')”))进行授权,它可以正常工作 作用域在到达oauth
我得到的令牌是: http://localhost:8080/servicesmem/oauth/token?username=myuser&password=mypassword&grant_type=password&scope=read,write,trust 我得到: 我得到: 我使用头:Authorization Bearer ACCESS_TOKEN,但我得到了同样的错误。我错过了什么
我有一些问题,当我想要获得“访问令牌”,我使用Spring Security在我的项目 WebSecurity配置 我在内存中设置了user以便在该类中进行身份验证,并且我使用的是内存令牌 我正确地发送了grant_type,client_id,client_secret,username和password,但没有在API上响应“访问令牌
我感到困惑的是,在向授权服务器发送授权请求时,似乎没有标准的方法来指定访问令牌的受众。 OAuth2将访问令牌指定为不透明字符串;规范中只有一处提到了“观众”,即访问令牌可以是“观众限制的”。许多最近的授权服务器实现似乎产生了JWT访问令牌,JWT指定了受众(aud)声明。 据我所知:-Auth0使用“audience”参数-Connect2id使用“resource”参数-Identity Se