Google plus插入时刻已停止使用google-api-dotnet-client工作

时间:2013-05-08 03:18:58

标签: .net google-api google-plus dotnetopenauth google-api-dotnet-client

问题是:调用API是否有新方法可以将活动插入到用户的个人资料中?

我在一个月前发布了a related question here。本周早些时候工作正常,当它突然停止工作并抱怨这个错误时:

  

[错误讯息]

     

发送直接消息或获取响应时发生错误

     

[内部异常]

     

远程服务器返回错误:(400)错误请求。

     

[堆栈跟踪]

     

在   DotNetOpenAuth.Messaging.StandardWebRequestHandler.GetResponse(HttpWebRequest的   请求,DirectWebRequestOptions选项)

     

在DotNetOpenAuth.Messaging.StandardWebRequestHandler.GetResponse(HttpWebRequest)   请求)

     

在DotNetOpenAuth.Messaging.Channel.GetDirectResponse(HttpWebRequest)   webRequest)

     

在DotNetOpenAuth.Messaging.Channel.RequestCore(IDirectedProtocolMessage)   请求)

     

在DotNetOpenAuth.Messaging.Channel.Request(IDirectedProtocolMessage)   requestMessage)

     

在DotNetOpenAuth.OAuth2.ClientBase.UpdateAuthorizationWithResponse(IAuthorizationState)   authorizationState,EndUserAuthorizationSuccessAuthCodeResponse   authorizationSuccess)

     

在DotNetOpenAuth.OAuth2.WebServerClient.ProcessUserAuthorization(HttpRequestInfo)   请求)

     

在GPlusWrapper.PlusWrapper.GetAuthorization(WebServerClient客户端)中   \ gplus_csharp_ssflow \ PlusWrapper.cs:行   122

     

at Google.Apis.Authentication.OAuth2.OAuth2Authenticator`1.LoadAccessToken()

     

at Google.Apis.Authentication.OAuth2.OAuth2Authenticator 1.ApplyAuthenticationToRequest(HttpWebRequest request)
at Google.Apis.Requests.Request.CreateWebRequest(Action
1   onRequestReady)at   Google.Apis.Requests.Request.ExecuteRequestAsync(Action 1 responseHandler) at Google.Apis.Requests.ServiceRequest 1.GetAsyncResponse(Action 1 responseHandler) at Google.Apis.Requests.ServiceRequest 1.GetResponse()at   Google.Apis.Requests.ServiceRequest`1.Fetch()

乍一看,谷歌API和DNOA经验丰富的人会说这是一个DNOA问题。我一直在搜索三天,我发现有相同错误消息的问题不符合问题 - 或者提出的解决方案不符合我的问题。

接下来要做的就是升级,是的,因为谷歌团队可能已经改变了API的工作原理,所以它是有意义的。所以我从v1.2.4737.25316升级到v1.3.0.15233,这是最新的稳定版本 in the repo

为了确保我的代码中没有导致问题的代码或其他内容,我重新访问了Gus' sample code given here。该示例代码曾用于v1.2,但也停止在v1.2v1.3中工作。

现在,由于有一个新版本的库,只有重新访问the docs并查看配置中是否有更改或如何调用API才有意义。应该调用API的方式似乎没有什么不同。

所以我做了我上次调试应用程序时所做的事情。我试过了两个

  • request_visible_actions;和
  • requestvisibleactions

我仍然有access_type参数,但没有任何效果。

同样,我的问题是:调用API是否有新方法可以将活动插入到用户的个人资料中?

请注意我使用的是服务器端流程

1 个答案:

答案 0 :(得分:0)

如果您拥有quickstart working,则可以进行API调用以编写应用活动。要对此进行测试,请在快速入门中找到以下代码行:

ps = new PlusService(authenticator);

此时,如果您已成功获得授权,则可以创建一个时刻对象并将其写入Google:

Moment body = new Moment();
body.Target = new ItemScope();
body.Target.Url = “https://developers.google.com/+/web/snippet/examples/widget”;
body.Type = “http://schemas.google.com/AddActivity”;
ps.Moments.Insert(body, “me”, MomentsResource.Collection.Vault).Fetch();

我刚刚测试了代码,它仍然有效,这意味着该库仍然可以进行API调用。乍一看,我记得you had asked this before,这让我想知道这是否是特定于SS流的东西。经过一些调试后,我遇到了与运行SS相同的问题,但是,客户端正在接收授权代码 - 这是一个好兆头。客户端库失败,即使我正在删除在request_visible_actions中抽取的黑客 - 这是一个不好的迹象。

使用request_visible_actions仍然是正确的,并且在底层,客户端库正在使用OAuth V2流程,该流程不应该更改。

最终更新:

changed my example server-side demo手动交换访问令牌/刷新令牌的授权码。请从GitHub再次抓取它,看看是否有帮助,但这是一个快速和脏的临时修复。我将研究为什么客户端库会破坏代码交换部分。

P.S。我知道v1.3的更改,希望我能尽快花时间执行代码更新!我以为没有人会注意到......