2013-03-15 96 views
3

我使用谷歌的API-dotnet的客戶端嘗試了moment.insert,也包括在的OAuth請求的request_visible_actions和ACCESS_TYPE,但我總是得到異常:谷歌加API Moment.Insert

給定的關鍵是沒有出現在字典中。

這裏是堆棧跟蹤:

at System.Collections.Generic.Dictionary`2.get_Item(TKey key) 
    at Google.Apis.Discovery.BaseService.GetResource(IResource root, String fullResourceName) in c:\code.google.com\google-api-dotnet-client\default\Tools\BuildRelease\bin\Debug\12-20-2012\default\Src\GoogleApis\Apis\Discovery\Service.cs:line 279 
    at Google.Apis.Discovery.BaseService.CreateRequest(String resource, String methodName) in c:\code.google.com\google-api-dotnet-client\default\Tools\BuildRelease\bin\Debug\12-20-2012\default\Src\GoogleApis\Apis\Discovery\Service.cs:line 186 
    at Plus.v1.PlusService.CreateRequest(String resource, String method) 
    at Google.Apis.Requests.ServiceRequest`1.BuildRequest() in c:\code.google.com\google-api-dotnet-client\default\Tools\BuildRelease\bin\Debug\12-20-2012\default\Src\GoogleApis\Apis\Requests\ServiceRequest.cs:line 134 
    at Google.Apis.Requests.ServiceRequest`1.GetAsyncResponse(Action`1 responseHandler) in c:\code.google.com\google-api-dotnet-client\default\Tools\BuildRelease\bin\Debug\12-20-2012\default\Src\GoogleApis\Apis\Requests\ServiceRequest.cs:line 169 
    at Google.Apis.Requests.ServiceRequest`1.GetResponse() in c:\code.google.com\google-api-dotnet-client\default\Tools\BuildRelease\bin\Debug\12-20-2012\default\Src\GoogleApis\Apis\Requests\ServiceRequest.cs:line 185 
    at Google.Apis.Requests.ServiceRequest`1.Fetch() in c:\code.google.com\google-api-dotnet-client\default\Tools\BuildRelease\bin\Debug\12-20-2012\default\Src\GoogleApis\Apis\Requests\ServiceRequest.cs:line 211 
    at VocalbeeWebApp.Controllers.HomeController.CheckGooglePlusAuthorization() in d:\Projects\VocalBee\VocalBeeSocialServer-T\VocalbeeWebApp\VocalbeeWebApp\Controllers\HomeController.cs:line 217 

下面是moment.insert代碼片段:

  Google.Apis.Plus.v1.Data.Moment body = new Google.Apis.Plus.v1.Data.Moment(); 
      Google.Apis.Plus.v1.Data.ItemScope target = new Google.Apis.Plus.v1.Data.ItemScope(); 

      target.Id = "target-id"; 
      target.Image = "http://www.vocalbee.com/Images/WebLogoNewSmall.png"; 
      target.Type = "http://schemas.google.com/AddActivity"; 
      target.Description = "The description for the activity"; 
      target.Name = "An example of add activity"; 

      body.Target = target; 
      body.Type = "http://schemas.google.com/AddActivity"; 
      Google.Apis.Plus.v1.MomentsResource.InsertRequest insert = 
       new Google.Apis.Plus.v1.MomentsResource.InsertRequest(
        pw.plusService, 
        body, 
        me.Id, 
        Google.Apis.Plus.v1.MomentsResource.Collection.Vault); 
      Google.Apis.Plus.v1.Data.Moment result = insert.Fetch(); 

任何人可以幫助我搞清楚這個問題?

+0

這可以被認爲是所用的相同的解決方案張貼[我在這裏提問](http://stackoverflow.com/questions/15263378/google-insert-moment-using-google-api-dotnet-client)的副本那裏和我已經記錄在我自己的答案。 – 2013-03-15 23:45:18

回答

4

它看起來像你可能會使用舊版本的庫。最新版本可從這裏:

請確保您有較新的替換所有舊的客戶端庫的依賴關係。你至少應該取代現有版本:

  • Google.Apis.dll
  • Google.Apis.Plus.v1.dll

令牌離線清爽的一個例子是在Google+ Quickstart Demo (C#/.NET)

+0

感謝哥們,我解決了你的答案。我下載的圖書館版本較舊。 你知道如何在沒有用戶交互的情況下刷新access_token嗎? – rupesh 2013-03-15 13:15:09

+0

示例添加回答。 – class 2013-07-31 16:16:48