web-dev-qa-db-ja.com

redirect_uri_mismatchリクエストのリダイレクトURIが、OAuthクライアントに対して承認されたものと一致しません

私は次のクライアントシークレットを持っています

{
  "web": {
    "client_id": "testid",
    "project_id": "testproj",
    "auth_uri": "https://accounts.google.com/o/oauth2/auth",
    "token_uri": "https://www.googleapis.com/oauth2/v3/token",
    "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
    "client_secret": "test-sec",
    "redirect_uris": [
      "https://localhost:8080/oauth2callback"
    ]
  }
}

そして私は得ています

"エラー:redirect_uri_mismatchリクエストのリダイレクトURI http://127.0.0.1:8414/authorize/ は、OAuth client 。

承認されたリダイレクトURIを更新するには、次のサイトにアクセスしてください: "。修正方法を提案してください。

私はC#を使用しています。これで資格情報を作成しました-

GoogleWebAuthorizationBroker.AuthorizeAsync( GoogleClientSecrets.Load(stream).Secrets, scopes,
                                             "user",
                                              CancellationToken.None, 
                                              new FileDataStore(Directory.GetCurrentDirectory() + "\\AccessToken\\" , 
                                             true)).Result; 

しかし、初めてログインするとポップアップし、ログインすると、フォルダ内にGoogle.Apis.Auth.OAuth2.Responses.TokenResponse-userファイルが作成されました。初回ログインをバイパスする方法はありますか?

ありがとう。

3
Anindita Ghatak

https://console.developers.google.com で認証情報を作成する場合:

Credentials

Create credentialsを選択してOAuth client IDをクリックした後:

Create credentials

アプリケーションタイプとして[その他]を選択します。

Create OAuth client ID

次の形式の資格情報が必要です。

{
  "installed": {
    "client_id": "...",
    "project_id": "...",
    "auth_uri": "https://accounts.google.com/o/oauth2/auth",
    "token_uri": "https://oauth2.googleapis.com/token",
    "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
    "client_secret": "...",
    "redirect_uris": [
      "urn:ietf:wg:oauth:2.0:oob",
      "http://localhost"
    ]
  }
}

これで、OAuth2リンクは、redirection_uriパラメーターのポートがhttp://localhost:8414のように機能するはずです(ランダムポートとして8414を使用)。そして、あなたはもうこのエラーではありません:

エラー:redirect_uri_mismatchリクエストのリダイレクトURI http:// localhost:8414/authorize / は、OAuthクライアントに対して承認されたものと一致しません。

3
glegoux

リダイレクトURIは、Googleが認証を返すURLです。これは、Oauth応答を処理するために設定したファイルである必要があります。

Google Developer Consoleでプロジェクトを作成したときに、送信元と応答の返送先を示すリダイレクトURIをGoogleに提供する必要があります。

"エラー:redirect_uri_mismatchリクエストのリダイレクトURI http://127.0.0.1:8414/authorize/ は、OAuthクライアントに対して承認されたものと一致しません。

http://127.0.0.1:8414/authorize/から送信していることを意味しますが、これはGoogle DeveloperConsoleで追加したリダイレクトURIの1つではありません。開発者コンソールに戻り、このhttp://127.0.0.1:8414/authorize/またはhttp://localhost:8414/authorize/を追加します。エンディング/も必要な場合と不要な場合があります。

ログインをバイパスする

あなたが理解する必要があるのは、GoogleのAPIデータのほとんどがプライベートユーザーデータであるということです。プライベートユーザーデータにアクセスするには、それを所有するユーザーの同意が必要です。 Oauth2を使用して、アプリケーションがデータにアクセスすることについてユーザーの同意を要求します。 oauth2の同意をバイパスする方法はありません。

残念ながら、YouTubeAPIにアクセスする他の方法はありません。プライベートユーザーデータにアクセスする場合は、常にユーザーに少なくとも1回は同意を求めてから、ファイルデータストアを使用して現在行っているように資格情報を保存する必要があります。

0
DaImTo