0

問題は、ユーザーのプロファイルにアクティビティを挿入できるように API を呼び出す新しい方法があるかどうかです。

約1か月前に関連する質問をここに投稿しました。今週初めまでは正常に動作していましたが、突然動作を停止し、このエラーについて不平を言いました:

[エラーメッセージ]

ダイレクト メッセージの送信中または応答の取得中にエラーが発生しました

【内部例外】

リモート サーバーがエラーを返しました: (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 認可状態、EndUserAuthorizationSuccessAuthCodeResponse 認可成功) で

DotNetOpenAuth.OAuth2.WebServerClient.ProcessUserAuthorization (HttpRequestInfo リクエスト) で

\gplus_csharp_ssflow\PlusWrapper.cs:line 122 の GPlusWrapper.PlusWrapper.GetAuthorization(WebServerClient クライアント)

Google.Api.Authentication.OAuth2.OAuth2Authenticator`1.LoadAccessToken() で

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

一見すると、Google API と DNOA の経験がある人は、これは DNOA の問題だと言うでしょう。3 日間検索しましたが、同じエラー メッセージが表示される問題が問題に適合しないか、提案された解決策が問題に適合しません。

したがって、次に行うことはアップグレードです。Google チームが API の動作方法を変更した可能性があるため、これは理にかなっています。そこで、リポジトリの最新の安定バージョンであるからv1.2.4737.25316にアップグレードしました。v1.3.0.15233

問題の原因が私のコードまたはコード内の何かではないことを確認するために、ここに記載されている Gus のサンプル コードを再確認しました。そのサンプル コードは で機能していましたが、 と の両方で機能しv1.2なくなりました。v1.2v1.3

ライブラリの新しいバージョンがあるため、ドキュメントを再度参照して、構成に何か変更があったかどうか、または API の呼び出し方法を確認することだけが理にかなっています。API の呼び出し方に違いはないようです。

そこで、アプリケーションのデバッグで前回行ったことを行いました。両方試してみました

  • request_visible_actions; と
  • リクエスト可視アクション

私はまだaccess_typeパラメータを持っていて、何も機能しませんでした。

繰り返しますが、私の質問は次のとおりです。アクティビティをユーザーのプロファイルに挿入できるように、API を呼び出す新しい方法はありますか?

サーバー側のフローを使用していることに注意してください

4

1 に答える 1

0

クイックスタートが機能している場合は、アプリ アクティビティを記述するための 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 呼び出しを行うことができます。よく見ると、以前も質問されていたのを思い出し、SSフロー特有のものなのかなと思いました。少しデバッグした後、SS を実行しているのと同じ問題が発生しましたが、クライアントは認証コードを受信して​​います - 良い兆候です。request_visible_actions をポンピングするためのハックを削除しているにもかかわらず、クライアント ライブラリが失敗しています。これは悪い兆候です。

request_visible_actions の使用は依然として正しく、クライアント ライブラリは内部で OAuth V2 フローを使用していますが、これは変更されるべきではありません。

最終更新:

サンプルのサーバー側デモを変更して、アクセス トークン/リフレッシュ トークンの認証コードを手動で交換しました。GitHub からもう一度取得して、それが役立つかどうかを確認してください。ただし、これは迅速で汚い一時的な修正です。クライアント ライブラリがコード交換部分で壊れている理由を調べます。

PS v1.3 の変更は承知しております。コードの更新をすぐに実行できるようになることを願っています。誰も気付かないと思ってた…

于 2013-05-09T00:50:14.920 に答える