【问题标题】:Google Calendar API for UWP Windows 10 Application适用于 UWP Windows 10 应用程序的 Google 日历 API
【发布时间】:2018-05-08 21:25:07
【问题描述】:

我正在开发一个 UWP Windows 10 应用程序,并希望在连接到我的 Raspberry Pi 的屏幕上显示我的 Google 日历中的事件。问题是,Google-Calendar-API v3 不支持 UWP。

Google Calendar API for UWP Windows 10 Application One or more errors occurred 上已有解决方法,但不知何故无法运行代码。我有同样的问题,在 cmets 中提到过。但是当我将var redirectURI = "pw.oauth2:/oauth2redirect"; "] 替换为[" var redirectURI = "localhost/urn:ietf:wg:oauth:2.0:oob";] 时,什么也没有发生。

我做错了什么? 还有其他方法可以将事件从我的 Google 日历获取到我的 UWP 应用程序吗?还是有类似http请求的东西?

谢谢!

【问题讨论】:

    标签: c# uwp raspberry-pi google-calendar-api google-api-explorer


    【解决方案1】:

    首先,适用于 .NET 的 Google API 客户端库目前仍不支持 UWP。通过 REST API 是适合您的正确解决方法。

    如果您在WebAuthenticationBroker UI 上遇到以下异常,

    我们现在无法连接到您需要的服务。检查您的网络连接或稍后再试

    这和上面帖子的评论中提到的一样,你需要排查 Web 身份验证代理 API 以查找内部原因。您可以使用 Fiddler 查看操作日志并查看 Web 请求和响应。具体操作方法请参考this tutorial

    或者您也可以尝试使用OAuth for Apps: Windows Samples 测试您的请求。此示例演示如何使用 OAuth 2.0 授权请求打开用户的浏览器,而不使用 WebAuthenticationBroker。在这种情况下,您可以知道您是否可以直接使用浏览器成功登录。如果有任何问题,您也可以在浏览器中看到错误。

    一个常见的可能原因是导航错误,这意味着导航到您的请求 URL 时出现问题。例如,您可能会在浏览器中收到无法连接到代理服务器错误。在这种情况下,您可以尝试关闭Settings->Network->Proxy 中的Use a proxy server 选项。

    如果您仍然无法通过上述方式解决您的问题,请按照我提到的方式提供内部错误详细信息。例如,提供日志:

    如需完整示例,请参考official sample 的场景 4。

    【讨论】:

    • 感谢您的帮助!代码现在正在运行。我使用了 windows 示例中的客户端 ID 并将其放入 stackoverflow.com/questions/40539180/…> 的代码中。登录工作正常,现在我的问题是。如何将事件列表从我的 Google 日历获取到我的 UWP 应用程序?我将在下面发布我的代码。谢谢!
    • @Raither,我看到你删除了你的回复,这实际上是一个问题。您是否打开了新问题或准备编辑以更新您当前的问题?
    【解决方案2】:

    首先,完美指南here。它一步一步地解释清楚。您也可以关注this 应用程序了解如何实施。 现在关于您的问题;在示例应用程序中,您可以看到在没有 localhost 的情况下使用了重定向 url。它应该如下所示。您可以使用urn:ietf:wg:oauth:2.0:oob:auto 而不是urn:ietf:wg:oauth:2.0:oob 不同之处在于自动关闭浏览器并返回。另一种,代码需要手动复制。 最重要的是在谷歌控制台中,当您创建新的身份验证凭据时,您必须选择 Ios,如下所示。否则你不能使用urn:ietf:wg:oauth:2.0:oob:auto。这对我来说就像一种魅力。

    var googleUrl = new System.Text.StringBuilder();             
                googleUrl.Append("https://accounts.google.com/o/oauth2/auth?client_id="); 
                googleUrl.Append(Uri.EscapeDataString("your client it")); 
                googleUrl.Append("&scope=openid%20email%20profile"); 
                googleUrl.Append("&redirect_uri="); 
                googleUrl.Append(Uri.EscapeDataString("urn:ietf:wg:oauth:2.0:oob:auto")); 
                googleUrl.Append("&response_type=code"); 
                googleUrl.Append("&include_granted_scopes=true"); 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-25
      • 1970-01-01
      • 2018-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-15
      • 1970-01-01
      相关资源
      最近更新 更多