无法从程序集“Google.Apis”加载“Google.Apis.Requests.IErrorResponseHandler”类型

时间:2013-12-12 10:45:24

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

我是.net中的Google Auth api日历。我已复制此链接中的代码:Refresh Token Expiration time Google calendar 无法从程序集'Google.Apis,Version = 1.6.0.16897,Culture = neutral,PublicKeyToken = null'

加载类型'Google.Apis.Requests.IErrorResponseHandler'

enter image description here

这是我的代码:

private CalendarService CreateService(string token)
    {
        //KeyValuePair<string, string> credentials = Ninject.Web.Common.Get3LOCredentials();
        var provider = new NativeApplicationClient(GoogleAuthenticationServer.Description, this.clientID, this.ClientSecret);
        //provider.ClientIdentifier = clientID;
        //provider.ClientSecret = clientSecret;
        var auth = new Google.Apis.Authentication.OAuth2.OAuth2Authenticator<NativeApplicationClient>(provider, (p) => GetAuthorization(provider, token));
        CalendarService service = new CalendarService(new BaseClientService.Initializer()
        {
            Authenticator = auth,
            ApiKey = ConfigurationManager.AppSettings[this.APIkey].ToString(),
            GZipEnabled = false
        });
        return service;
    }

    private static IAuthorizationState GetAuthorization(NativeApplicationClient arg, String Refreshtoken)
    {
        IAuthorizationState state = new AuthorizationState(new[] { CalendarService.Scopes.Calendar.GetStringValue() });
        state.Callback = new Uri(NativeApplicationClient.OutOfBandCallbackUrl);
        state.RefreshToken = Refreshtoken;
        return state;
    }

2 个答案:

答案 0 :(得分:0)

您是否使用包管理器安装API?

此外,您是要每次请求访问还是要保存refreshtoken以便在进行以下调用时获得未过期的访问令牌?

答案 1 :(得分:0)

我通过卸载并重新安装NuGet软件包“google.apis.auth”解决了这个问题。这是因为安装了多个版本。

  1. 右键单击项目的“参考”菜单。手动删除 与google.apis.auth相关的所有包引用。

  2. 然后,选择“管理NuGet包”,搜索“google.apis.auth”, 并卸载“google.apis.auth”。

  3. 重新安装相同的包。

  4. 清理并重建

  5. 如果它不起作用,您可以尝试重新安装“google.apis”。