远程API,ClientLogin到Oauth2.0

时间:2016-02-17 18:41:39

标签: java google-app-engine oauth-2.0 google-oauth2 remoteapi

我在app -engine上使用RemoteAPI进行谷歌身份验证(使用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 ---");
    }

}

1 个答案:

答案 0 :(得分:0)

对于OAuth2身份验证,您在gcloud中有两个主要解决方案。

<强> gcloud

安装gcloud(https://cloud.google.com/sdk/),然后初始化它(https://cloud.google.com/sdk/docs/initializing)。 在那之后,你应该去运行&#34; gcloud auth login&#34;这将提示您为gmail上的已连接帐户启用身份验证窗口。

您的其他资源是通过Google控制台创建一个新的服务帐户,提供一个json密钥并将其作为功能参数中的凭据传递或在GOOGLE_APPLICATION_CREDENTIALS环境变量中设置或使用gcloud auth activatve-service-account --key -file&#34; PATH_TO_JSON&#34;。

创建服务帐户的教程:https://developers.google.com/identity/protocols/OAuth2ServiceAccount#overview

gcloud默认身份验证优于服务帐户(如下所述)的主要优点是每个Google云端产品都会在一个固定位置检查application_credentials.json(well_known_file)文件。另一个优点是它的令牌可以在一个多小时的会话期间刷新。