【问题标题】:Grant access to Google API on hosting server授予对托管服务器上的 Google API 的访问权限
【发布时间】:2018-12-31 08:49:50
【问题描述】:


我正在开发一个使用谷歌 API 从谷歌日历获取数据的网站, 所以我从谷歌文档中获取了测试代码并对其进行了定制。

当我在本地调试它时一切正常,它打开了一个新标签并要求访问谷歌帐户,就像它应该的那样。

这是我用于获取响应令牌的方法:

private static UserCredential GetCredential()
{
    UserCredential credential;
    var path = Path.Combine(HostingEnvironment.ApplicationPhysicalPath, "App_Data/credentials.json");
    using (var stream =
        new FileStream(path, FileMode.Open, FileAccess.Read))
    {
        string credPath = Path.Combine(HostingEnvironment.ApplicationPhysicalPath, ".credentials/calendar-access.json");

        credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
            GoogleClientSecrets.Load(stream).Secrets,
            Scopes,
            "user",
            CancellationToken.None,
            new FileDataStore(credPath, true)).Result;
    }
    return credential;
}

我的问题出在服务器上,当我第一次尝试从谷歌获取数据时,页面进入无限循环。

我担心假设从谷歌帐户获得访问权限的选项卡正在服务器上打开,这就是为什么它会无限加载。

所以我的问题是,
首先,如果可能的话,如果是的话,我该如何解决?
其次,有更好的方法吗?

【问题讨论】:

  • 您所有的文件 .json 都在您的服务器中?
  • 是的,当然,我还注意到创建了响应令牌的文件夹但没有令牌。这就是为什么我怀疑它在服务器中打开了一个标签。
  • 你检查了Web applications (ASP.NET MVC)的实现吗?
  • 据我所知,这是为了授权 google 用户登录,我只需要使用我自己的 google 帐户来获取日历信息。

标签: c# .net asp.net-mvc google-api google-calendar-api


【解决方案1】:

我已经为此找到了一种解决方案并进行了多客户端身份验证,请在此处查看我的帖子:

Deploying Gmail Apis Project Authentification probleme

【讨论】:

  • 我注意到在我的链接中有一个我不知道的“目的地”,这个解决方案并没有涵盖所有内容。
  • 但它是,credentials.json 包含 Client_ID 和 Client_Secret 并且 calendar-access.json 包含 token_access 所以你不需要使用谷歌的身份验证只是尝试我的解决方案并告诉我你重新
  • 我没有 token_access,这就是我想要获取的,我只需要它工作一次,这样它就会生成一个响应令牌并将其保存在服务器上。
  • 使用我的解决方案,您可以获得包含令牌访问权限的 Token var,或者您可以获得凭证对象来获取访问邮件、配置文件、.....
  • 去阅读google api文档,你会明白的:)
【解决方案2】:

我找到了我想要的解决方案


我关注了这个link
这正是我正在寻找的,它将令牌保存在内存中而不是创建文件,还生成 URL 并涵盖 MVC 的所有内容

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    • 2013-07-27
    相关资源
    最近更新 更多