0

首次登录谷歌后收到的响应码。

[ http://localhost:8080/?state=trueprompt%3Dconsent&code=4%2FjlCxJC7rg57nOG7w-0MP4M1BuQ7cbI4GLCNofMzPeQQ#][1]

下面给出的是我正在使用的代码

GoogleConnectionFactory connectionFactory = new GoogleConnectionFactory("CLIENT_ID","CLIENT_SECRET");
        System.out.println(connectionFactory.getScope());
        connectionFactory.generateState();
        OAuth2Operations oauthoperations =connectionFactory.getOAuthOperations();
        OAuth2Parameters params = new OAuth2Parameters();
        params.setRedirectUri("http://localhost:8080");
        params.setScope("https://www.googleapis.com/auth/userinfo.profile");
        params.setState("true");
        String authorizeUrl = oauthoperations.buildAuthenticateUrl(GrantType.AUTHORIZATION_CODE,params);

收到 authorizeUrl 后,我将其直接粘贴到浏览器上,然后将我带到谷歌登录页面。登录后,它会重定向回带有代码参数值的回调 url,这在第一个链接中提到。

但是该响应代码不适用于获取访问令牌。当我再次将相同的登录 URL 复制粘贴到浏览器时,它会使用下面提到的不同响应代码进行响应。这次我已经登录了,我不必再次登录,它会以不同的响应代码进行响应,该代码工作正常,我能够获得 AccessToken。第一个和第二个响应代码之间的区别在于,第一个响应代码为 4%,而第二个响应代码为 4/。

http://localhost:8080/?state=true&code=4/0Y9NMh9fYAr3kfy3r1por3Py1LCdbOsIUz3fwdv78gc#

        AccessGrant accessGrant = oauthoperations.exchangeForAccess("AUTHORIZATION_CODE", "http://localhost:8080",null );
        Connection<Google> connection = connectionFactory.createConnection(accessGrant);
        System.out.println(connection.getDisplayName());

请帮我解决这个问题。

4

0 回答 0