Aks*_*hay 3 node.js google-api-client google-api-nodejs-client gmail-api
我希望我的服务帐户能够模拟 GSuite 中的用户之一。我有
domain-wide delegation
在服务帐户设置中启用GCP
API Client
添加了service account id
GSuite
在浏览文档(java)时,我看到了这个
GoogleCredential credential = GoogleCredential.fromStream(new FileInputStream("MyProject-1234.json"))
.createScoped(Collections.singleton(SQLAdminScopes.SQLSERVICE_ADMIN))
.createDelegated("user@example.com");
Run Code Online (Sandbox Code Playgroud)
在这里,他们指定服务帐户应模拟哪个用户。这段代码是java中的。我需要在nodejs 中完成同样的事情。
在查看nodejs-client
for的文档时googleapis
,我发现了这一点:
const {google} = require('googleapis');
const auth = new google.auth.GoogleAuth({
keyFile: '/path/to/your-secret-key.json',
scopes: ['https://www.googleapis.com/auth/cloud-platform'],
});
Run Code Online (Sandbox Code Playgroud)
和
const {google} = require('googleapis');
const oauth2Client = new google.auth.OAuth2(
YOUR_CLIENT_ID,
YOUR_CLIENT_SECRET,
YOUR_REDIRECT_URL
);
// set auth as a global default
google.options({
auth: oauth2Client
});
Run Code Online (Sandbox Code Playgroud)
GoogleAuth
和这里有什么区别OAuth2
?
如何设置一切,以便我的 Node.js 应用程序可以user@abc.xyz
通过服务帐户访问邮件?
如何指定我email
要访问的方式service account
?
身份验证库可以根据代码运行的环境为您创建正确的凭据类型,而不是手动创建 OAuth2 客户端、JWT 客户端或计算客户端。
换句话说:
google.auth.GoogleAuth
是一个库工具,如果您不知道需要哪些凭据,它可以动态地为您创建正确的凭据google.auth.OAuth2
始终创建专门的 OAuth2 凭据JSON Web Token
创建一个指定的json
文件)、启用了域范围委派并在管理控制台中为服务帐户提供了必要的范围。subject: USER_EMAIL
在创建 JWT 客户端时添加以下行。样本
const {JWT} = require('google-auth-library');
//THE PATH TO YOUR SERVICE ACCOUNT CRENDETIALS JSON FILE
const keys = require('./jwt.keys.json');
async function main() {
const client = new JWT({
email: keys.client_email,
key: keys.private_key,
scopes: ['YOUR SCOPES HERE'],
subject: USER_EMAIL
});
const url = `https://dns.googleapis.com/dns/v1/projects/${keys.project_id}`;
const res = await client.request({url});
console.log(res.data);
}
main().catch(console.error);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3883 次 |
最近记录: |