redirect_uri_mismatch请求中的重定向URI与为OAuth客户端授权的重定向URI不匹配

时间:2018-12-08 08:39:01

标签: google-api youtube-api google-oauth youtube-data-api

我有以下客户机密

{
  "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   请求http://127.0.0.1:8414/authorize/中的重定向URI与为OAuth客户端授权的重定向URI不匹配。

要更新授权的重定向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 个答案:

答案 0 :(得分:2)

https://console.developers.google.com中创建凭据时:

Credentials

在通过选择Create credentialsOAuth 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请求http://localhost:8414/authorize/中的重定向URI与为OAuth客户端授权的重定向URI不匹配。

答案 1 :(得分:2)

当添加为授权重定向URL时,我只是忽略了错误消息中的端口。

 http://127.0.0.1/authorize/

答案 2 :(得分:1)

重定向uri是您希望Google将身份验证返回到的URL。这应该是您为处理Oauth响应而设置的文件。

在Google Developer Console中创建项目时,您应该已经向google提供了一个重定向uri,其中指明了您将从中发送邮件以及希望将响应返回到哪里。

  

“错误:redirect_uri_mismatch请求http://127.0.0.1:8414/authorize/中的重定向URI与为OAuth客户端授权的重定向URI不匹配。

表示您是从http://127.0.0.1:8414/authorize/发送的,但这不是您在Google开发者控制台中添加的重定向uri之一。返回开发者控制台并添加此http://127.0.0.1:8414/authorize/http://localhost:8414/authorize/,您可能也可能不需要结尾/

绕过登录

您需要了解的是,大多数Google api数据是私人用户数据。为了访问私人用户数据,您必须征得拥有它的用户的同意。我们使用Oauth2征得用户同意,以使我们的应用程序访问其数据。无法通过oauth2同意。

很遗憾,没有其他方法可以访问YouTube api。如果要访问私人用户数据,则始终必须至少征求用户一次同意,然后像现在一样使用文件数据存储来保存凭据。