.net和谷歌身份验证

时间:2015-01-04 19:48:07

标签: .net google-calendar-api google-oauth google-api-dotnet-client

我使用谷歌使用谷歌日历的例子。我的应用程序运行良好,直到他们最近更改了API。我发现他们的文档有点压倒性而且不是很有用。我用过这个example

我收到以下错误

  

类型的未处理异常:   System.InvalidOperationException'发生在Google.Apis.Auth.dll

其他信息:至少应设置一个客户机密码(已安装或Web)

我不知道客户的秘密是什么或者他们在谈论什么。我已经搜索了这个短语,没有任何信息会回来。什么是客户端的蠢事,我该如何设置?

以下是我得到错误的代码行。

 credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                    GoogleClientSecrets.Load(stream).Secrets, scopes, "user", CancellationToken.None,
                    New FileDataStore("CalendarSample")).Result

我有他们为我设置的json文件,它似乎正在阅读它。我确信我应该修改该文件,但我找不到任何有关确切说明的内容。

任何帮助都会很棒。我最后要做的只是添加和删除谷歌日历中的条目。

由于

1 个答案:

答案 0 :(得分:0)

我将假设你在这里与Oauth2合作。

使用nugget包Google.Apis.Calendar.v3 Client Library

对Google日历进行身份验证的基本代码
string clientId = "";//From Google Developer console https://console.developers.google.com
 string clientSecret = "";//From Google Developer console https://console.developers.google.com
 string userName = ""//  A string used to identify a user.
 string[] scopes = new string[] {
    CalendarService.Scope.Calendar, // Manage your calendars
    CalendarService.Scope.CalendarReadonly // View your Calendars
 };

// here is where we Request the user to give us access, or use the Refresh Token that was previously stored in %AppData%
UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(new ClientSecrets {
        ClientId = clientId, ClientSecret = clientSecret
    }, scopes, userName, CancellationToken.None, new FileDataStore("Daimto.GoogleCalendar.Auth.Store")).Result;

通过身份验证后,您可以使用创建日历服务来访问Google日历

// Create the service.
    CalendarService service = new CalendarService(new BaseClientService.Initializer() {
        HttpClientInitializer = credential,
        ApplicationName = "Calendar API Sample",
    });

从教程Google Calendar API with C#中删除了代码,教程保持最新。