我正在使用RemoteAPI在应用程序引擎上进行Google身份验证(使用ClientLogin,已弃用)。我想将其更改为 Oauth2.0 .我用谷歌搜索了很多,但没有找到太多解释。任何形式的帮助将不胜感激。
public abstract class RemoteApiClient {
protected void doOperationRemotely() throws IOException {
TestProperties testProperties = TestProperties.inst();
System.out.println("--- Starting remote operation ---");
System.out.println("Going to connect to:"
+ testProperties.PROJECT_REMOTEAPI_APP_DOMAIN + ":"
+ testProperties.PROJECT_REMOTEAPI_APP_PORT);
RemoteApiOptions options = new RemoteApiOptions().server(
testProperties.PROJECT_REMOTEAPI_APP_DOMAIN,
testProperties.PROJECT_REMOTEAPI_APP_PORT).credentials(
testProperties.TEST_ADMIN_ACCOUNT,
testProperties.TEST_ADMIN_PASSWORD);
RemoteApiInstaller installer = new RemoteApiInstaller();
installer.install(options);
try {
doOperation();
} finally {
installer.uninstall();
}
System.out.println("--- Remote operation completed ---");
}
}
对于OAuth2身份验证,gcloud中有两个主要解决方案。
云云
安装 gcloud (https://cloud.google.com/sdk/),然后初始化它 (https://cloud.google.com/sdk/docs/initializing)。之后,您应该运行"gcloud auth login",这将提示您在gmail上连接帐户的身份验证窗口。
您的另一个解决方案是通过googles控制台创建一个新的服务帐户,为其提供json密钥并将其作为函数参数中的凭据传递,或者在GOOGLE_APPLICATION_CREDENTIALS环境变量中设置它或使用gcloud auth activatve-service-account --key-file "PATH_TO_JSON"。
创建服务帐户的教程:https://developers.google.com/identity/protocols/OAuth2ServiceAccount#overview
gcloud默认身份验证相对于服务帐户(如下所述)的主要优点是每个Google Cloud产品都会在恒定位置检查application_credentials.json(well_known_file)文件。另一个优点是其令牌可以在一个多小时的会话中刷新。