1

weeblyで作成したウェブサイトにGoogleAnalyticsを使用しています。私はGoogleAPIを使用して、すべてをプログラムで実装しています。

OAuthフロー中に直面している問題は、次のエラーが発生することです。

Error: redirect_uri_mismatch
The redirect URI in the request:localhost:34190/Callback did not match a registered redirect URI

        Request Details
        scope=https://www.googleapis.com/auth/analytics.readonly
        response_type=code
        access_type=online
        redirect_uri=local_host:34190/Callback
        display=page
        client_id={CLIENT_ID}.apps.googleusercontent.com

私のグーグルAPIコンソールの設定は次のとおりです。

Redirect URI: localhost/oauth2callback
JavaScript origins: localhost

いったいなぜ私redirect_urilocalhost:34190/Callbackそれを次のように設定したのhttp://mya.com/oauth2callbackですか?

私がopenauthのた​​めに書いたコード:

public static void main(String[] args) throws Exception {
    Analytics analytics = initializeAnalytics();
}

private static Analytics initializeAnalytics() throws Exception {
    Credential credential = authorize();
}

private static Credential authorize() throws Exception {
    GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(
        JSON_FACTORY, Testcode.class.getResourceAsStream("/client_secrets.json"));
    FileCredentialStore credentialStore = new FileCredentialStore(
        new File(System.getProperty("user.home"), ".credentials/analytics.json"),
        JSON_FACTORY);
    GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
        HTTP_TRANSPORT, JSON_FACTORY, clientSecrets,
        Collections.singleton(AnalyticsScopes.ANALYTICS_READONLY)).setCredentialStore(
            credentialStore).build();
    return new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver())
                   .authorize(clientSecrets.getDetails().getClientId());
  }       

このエラーを取り除くにはどうすればよいですか?

4

1 に答える 1

4

したがって、WebサイトはGoogleにlocalhost:34190/CallbackリダイレクトURIとして使用するように指示します。しかし、あなたはGoogleサーバーに、アプリlocalhost/oauth2callbackがリダイレクトURIとして指定した場合にのみリクエストを受け入れるべきだと言いました。

簡単な修正は、次のようにGoogleコンソールを設定することです。

Redirect URI: http://localhost:34190/Callback

とにかく、あなたはにリダイレクトしたいことについて話しているhttp://mya.com/oauth2callback

この場合、ユーザーがWebサイトでクリックするリンクを変更して、これを指定する必要があります。

[...]&redirect_uri=http://mya.com/oauth2callback[...]

次に、これをGoogleコンソールで設定します。

Redirect URI: http://mya.com/oauth2callback
于 2013-03-26T11:51:59.203 に答える