gpt4 book ai didi

java - Google Endpoints API 对其他 API 的身份验证

转载 作者:行者123 更新时间:2023-12-01 12:22:44 24 4
gpt4 key购买 nike

我正在使用 Google Cloud Endpoints 创建一个 API,它需要在后端使用 Google Drive API。我可以通过添加用户参数来要求经过身份验证的用户,如下所示:

@ApiMethod(name = "folders.get", httpMethod = HttpMethod.GET)
public Folder getFolder(@Named("id") String id, User user) throws NotFoundException, ForbiddenException, BadRequestException {


if (user == null) {
throw new ForbiddenException("You must authenticate to use this API.");
}

Drive service = Utils.createDriveFromUser(user);

当我尝试使用用户参数向其他 Google API 发出请求时,问题就出现了。

createDriveFromUser 本质上是库存 OAuth 示例代码:

    AuthorizationCodeFlow authFlow = Utils.initializeFlow();
Credential credential = authFlow.loadCredential(user.getUserId());
Drive service = new Drive.Builder(Utils.HTTP_TRANSPORT,
Utils.JSON_FACTORY, credential).build();

上述代码适用于按照“正常”OAuth 流程发出请求。我有一个运行该方法的 servlet,并且能够成功对 Drive API 进行经过身份验证的调用。然而,当我尝试测试我的 API 方法时,我得到了 403:

{
"domain" : "usageLimits",
"message" : "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.",
"reason" : "dailyLimitExceededUnreg",
"extendedHelp" : "https://code.google.com/apis/console"
}

由于端点身份验证在本地开发服务器上的工作方式(始终返回 example@example.com 用户而不是我实际上可以进行真正的 API 调用的用户),我一直在部署应用程序来测试它。如果有更好的方法,我会洗耳恭听,但这个工作流程很糟糕。

端点 API 中的身份验证缺少什么?

最佳答案

您需要在 ApiMethod 注释上添加适当的范围、受众和 clientId。

此外,您是否在本地主机上测试您的应用程序?

每个云端点 OAuth docs ,开发服务器上的用户似乎是“用户对象,电子邮件设置为“example@example.com”,用户 ID 设置为 0,无论是否发出有效的 OAuth 请求”

关于java - Google Endpoints API 对其他 API 的身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26557542/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com