【问题标题】:google ExchangeCodeForTokenAsync invalid_grant in webapiwebapi中的谷歌ExchangeCodeForTokenAsync invalid_grant
【发布时间】:2016-07-02 22:51:43
【问题描述】:

我已经从google api client dotnet 和教程中实现了GoogleAuthorizationCodeFlow 场景,以从我的客户端作为代码发送到服务器的内容中获取令牌。但是当我打电话给flow.ExchangeCodeForTokenAsync 时,我收到以下错误:

{"Error:\"invalid_grant\", Description:\"\", Uri:\"\""}

我读了google authorization invalid_grantgusclass oauth 2 using google dotnet api client libraries,但它们并没有帮助我。我认为它一定很简单,但我不知道为什么它不起作用。 对于客户端,我使用了Satellizer,这是我的服务器代码:

public bool PostExchangeAccessToken(GoogleClientAccessCode code)
        {
            string[] SCOPES = { "email" };
            IAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow(new GoogleAuthorizationCodeFlow.Initializer
            {
                ClientSecrets = new ClientSecrets()
                {
                    ClientSecret = "******",
                    ClientId = "********.apps.googleusercontent.com"
                },
                Scopes = SCOPES
            });
            try
            {
                TokenResponse token;
                token = flow.ExchangeCodeForTokenAsync("*****@gmail.com", Newtonsoft.Json.JsonConvert.SerializeObject(code), "https://localhost:44301/",
                                CancellationToken.None).Result;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return true;
        }

有什么问题?

【问题讨论】:

    标签: asp.net-web-api oauth-2.0 google-signin google-oauth google-oauth-.net-client


    【解决方案1】:

    Github上我发现我必须使用来自客户端的Token并使用

    GoogleAuthorizationCodeFlow.Initializer() 
    

    创建我的 UserCredential 对象。

    【讨论】:

      【解决方案2】:

      您可以检查您的谷歌开发者控制台设置。(授权重定向 URI)

      凭据 => OAuth 2.0 客户端 ID => 您的应用程序设置 => 授权重定向 URI

      您必须添加网址。 ("https://localhost:44301/")

      我的代码:

       flow.ExchangeCodeForTokenAsync("me", authCode, redirectUri, CancellationToken.None).Result;
      

      授权的重定向 URI

      用于来自网络服务器的请求。这是用户在通过 Google 进行身份验证后被重定向到的应用程序中的路径。该路径将附加访问授权码。必须有协议。不能包含 URL 片段或相对路径。不能是公共 IP 地址。

      【讨论】:

        猜你喜欢
        • 2016-05-28
        • 1970-01-01
        • 1970-01-01
        • 2017-06-09
        • 1970-01-01
        • 2013-04-18
        • 2012-04-19
        • 2016-01-07
        • 1970-01-01
        相关资源
        最近更新 更多