Google 日历 V3 在本地环境之外使用时挂起

2024-02-24

我正在为 .net 版本的 Google Calendar API 开发一个包装器。身份验证相当简单并且在本地(localhost:port)运行良好。

UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
               new ClientSecrets
               {
                   ClientId = "The id of my public website",
                   ClientSecret = "The secret of my public website",
               },
               new[] { CalendarService.Scope.Calendar },
               "user",
               CancellationToken.None).Result;

            // Create the service.
            var service = new CalendarService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential
            });

return service.Events.List("primary").Execute().Items;

但问题是,当将相同的代码部署到生产环境时(当然,秘密已更改),每当我尝试访问数据时,应用程序就会挂起。没有例外,没有错误代码,它只是永远加载。

有人经历过这个吗?


我和你在一起。不管出于什么原因,这也发生在我身上。那是一座受难地。 下面的代码对我有用。这是我自己对 Google API Simple Task ASP.NET 示例的修订。

添加这些用法...

using System.IO;
using System.Threading;

using Google.Apis.Calendar.v3;
using Google.Apis.Calendar.v3.Data;
using Google.Apis.Auth.OAuth2;
using Google.Apis.Auth.OAuth2.Flows;
using Google.Apis.Auth.OAuth2.Web;
using Google.Apis.Services;
using Google.Apis.Util.Store;

还有这些...

CalendarService service;
static string gFolder = System.Web.HttpContext.Current.Server.MapPath("/App_Data/MyGoogleStorage");

protected void Page_Load(object sender, EventArgs e)
{
    IAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow(
        new GoogleAuthorizationCodeFlow.Initializer
        {
            ClientSecrets = GetClientConfiguration().Secrets,
            DataStore = new FileDataStore(gFolder),
            Scopes = new[] { CalendarService.Scope.Calendar }
        });

    var uri = Request.Url.ToString();
    var code = Request["code"];
    if (code != null)
    {
        var token = flow.ExchangeCodeForTokenAsync(UserId, code,
            uri.Substring(0, uri.IndexOf("?")), CancellationToken.None).Result;

        // Extract the right state.
        var oauthState = AuthWebUtility.ExtracRedirectFromState(
            flow.DataStore, UserId, Request["state"]).Result;
        Response.Redirect(oauthState);
    }
    else
    {
        var result = new AuthorizationCodeWebApp(flow, uri, uri).AuthorizeAsync(UserId,
            CancellationToken.None).Result;
        if (result.RedirectUri != null)
        {
            // Redirect the user to the authorization server.
            Response.Redirect(result.RedirectUri);
        }
        else
        {
            // The data store contains the user credential, so the user has been already authenticated.
            service = new CalendarService(new BaseClientService.Initializer
            {
                ApplicationName = "Calendar API Sample",
                HttpClientInitializer = result.Credential
            });
        }
    }

}

public static GoogleClientSecrets GetClientConfiguration()
{
    using (var stream = new FileStream(gFolder + @"\client_secrets.json", FileMode.Open, FileAccess.Read))
    {
        return GoogleClientSecrets.Load(stream);
    }
}

希望有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Google 日历 V3 在本地环境之外使用时挂起 的相关文章

随机推荐

  • 微软 Roslyn 与 CodeDom

    From a 新闻稿 http www infoworld com d application development microsofts roslyn reinventing the compiler we know it 176671
  • Laravel 5.5 将迁移与生产数据库合并

    希望我能很好地解释这一点 我有一个 Laravel 应用程序 已经投入生产了一分钟 所以 我有一堆包含很多更改的迁移文件 我想合并这些迁移文件而不丢失数据库 我的方式think这会起作用 将所有生产表迁移到所需状态 将所有迁移文件合并为所需
  • 如何列出 mongo shell 中的所有数据库?

    我知道怎么做列出特定数据库中的所有集合 https stackoverflow com questions 8866041 how to list all collections in the mongo shell 但是如何在 Mongo
  • mysqld_safe UNIX 套接字文件的目录“/var/run/mysqld”不存在

    使用 mysqld safe 启动 mysql 服务器 5 7 17 时 出现以下错误 2017 02 10T17 05 44 870970Z mysqld safe Logging to var log mysql error log 2
  • 从 XMLHttpRequest 对象中删除 cookie

    我正在使用 jquery 进行 ajax 调用 例如 ajax url path to webservice asmx beforeSend function xmlHTTPRequest modify headers here remov
  • 分页计算算法

    我正在尝试计算分页 var pagination total result length per page itemsPerPage required current page currentPage required last page
  • 用回形针圆角

    如何用回形针创建圆角 我找到了这个解决方案 它创建了使用convert options用回形针实现圆角 http loo no 2009 08 09 rounded corners with paperclip 但它不适用于 Rails 3
  • 跨浏览器事件对象规范化?

    我正在寻找有关事件对象的事件规范化的良好资源 我想自己做 但我总觉得我会错过一些东西 这是我到目前为止所掌握的 如果我错过了什么 请告诉我 var eFix function e e e window event e target e ta
  • Android,Cometd:Cometd 发送备用消息

    我正在开发一个 Android 应用程序 在其中实现聊天功能 考虑到 Cometd 的使用 聊天速度相当快 但由于某种原因 Cometd 正在发送备用消息 如果它发送message 1 则不发送message 2 然后发送3 依此类推 这是
  • 在 Svelte 中传递道具

    我正在尝试使用 Svelte Svelte Routing 和 Firestore 实现一个相当标准的博客应用程序 但我认为我误解了 props 在组件之间传递方式的基本部分 我的初始代码基于 Fireship io 上的优秀教程 该教程按
  • git amend 后的 git 合并冲突 - “你的分支和‘origin/master’已经分歧”

    发生的情况是这样的 最近提交到远程主控之后 我对本地存储库做了一个小小的更改 I add git commit amend并留下与 HEAD 相同的提交消息 我尝试将回购推向mastergit push 现在我明白了 On branch m
  • 如何在不使用VerifyExtraction的情况下将MSSQLServer数据库提取为.dacpac?

    我想使用 Server Management Studio 提取 MSSQLServer 数据库的数据库架构 我使用提取命令 提取数据层应用程序 数据库中有对另一个数据库的多个引用 因此 我收到以下错误 提取数据库时出错 数据包架构模型验证
  • 如何从小型、可重用的查询组成实体框架查询?

    我的应用程序中有一些 相当多余的 查询 如下所示 var last30Days DateTime Today AddDays 30 from b in Building let issueSeverity from u in Users w
  • Android Hello-World 编译错误:Intellij 找不到 aapt

    我正在尝试在 Ubuntu 12 04 中使用 IntelliJ 设置 Android 开发环境 我创建了一个 Android 应用程序模块 但是当我尝试构建时 出现以下错误 android apt compiler 无法运行程序 home
  • 为什么我的相机预览显示水平而不是垂直?

    在我的 Android 相机应用程序中 如果我将屏幕固定为横向 那么在横向模式下 它似乎必须被看到 但如果我将其固定为肖像 则相机预览将显示为水平方向 为什么会发生这种情况 以及解决方案是什么 Camera Parameters param
  • 正确使用封装在类内属性中的字段

    我应该使用哪种场景来更改类方法 属性内的私有字段 public class Example private int intVar 0 private string stringVar string Empty public int IntV
  • 是否可以在 Zeppelin Notebook 中设置全局变量?

    我正在尝试使用 Zeppelin 笔记本创建多段落仪表板 我希望使用仪表板的人们只需输入某些参数一次 例如 如果我正在制作包含有关不同网站的信息的仪表板 则仪表板用户只需选择他们想要的特定网站一次 整个多段落仪表板就会更新 这可能吗 如何在
  • 将 XFDF 与 PDF 表单合并以创建最终的 PDF 服务器端?

    这就是我目前所拥有的 用户提交表单数据并获得 下载 PDF 链接 该链接指向动态生成 XFDF 文件的脚本 并在设置适当的标头等后输出 XFDF 文件 XFDF 文件指向受密码保护的 PDF 这是使用 XFDF 数据填写字段的通用 PDF
  • 如何使用Flask-Migrate进行数据库迁移?

    我在使用 Flask Migrate 升级 降级数据库时遇到问题 有两张桌子 User and Post 由以下类定义 class User db Model id db Column db Integer primary key True
  • Google 日历 V3 在本地环境之外使用时挂起

    我正在为 net 版本的 Google Calendar API 开发一个包装器 身份验证相当简单并且在本地 localhost port 运行良好 UserCredential credential GoogleWebAuthorizat