2013-02-26 21 views
5

UGCにWeb要求を行い、oAuthを使用して認証しようとすると問題が発生しました。私は、次のようなWebRequestクラスを作ってるんだ。 - authは私のトークンがaccess_token.svcから返されTridion UGCサービスとoAuth認証

WebRequest wr = WebRequest.Create("http://ugc.service/odata.svc/Ratings(Id=200)"); 
wr.Headers["authorization"] = "OAuth " + auth; 

。文書によると、サービスから返されたトークンは、あるべき何かのように: -

HufXeuUt%2FYYElA8SYjJOkUkrXxV9dyXRirmKhjW%2FBの%の2FU%3D

は、しかし、私はaccess_token.svcから返されてる何よりのようなものです: -

{ "access_tokenは": "CLIENT_ID%3dtestuser%26expiresOn%3d1361898714646%26digest%3D%2FW%2fvyhQneZHrm1aGhwOlgLtA9xGWd77hkxWbjmindtM%3D"、 "expires_in":300}

Iは、様々な文字列を抽出するためにJSONを解析されてきたとこれらを認可に渡そうとしましたが、私が試したものは何でも私は間違いを起こしますgs - "エラーOAuth2AccessToken - ダイジェストが間違っています。"トークンのどの部分がどの形式で承認されるべきですか?

感謝

ジョン

+0

難しい質問ですが、OAuthの経験はほとんどありません。しかし、ヘッダーを通過するプロパティの先頭にoauth_が付いていることがわかります。 oauth_consumer_key、oauth_token。返されたプロパティは、クエリ文字列で使用できるように思えます。 OAuthライブラリを使用すると少し役に立ちます。 http://oauth.net/code/ –

+1

私はoauthとodataを含むように再タグ付けしました。これはTridionではなくその問題のようです。それらのトピックについての質問も検索してみてください。 –

答えて

5

あなたが言及したように、プロトコルはこれです:

  1. あなたはあなたが必要とする(トークンを取得するためのアクセストークンエンドポイントにPOSTリクエストを行いますここであなたのclient_idとclient_secretをヘッダとして、またはクエリパラメータとして提供する)。

  2. あなたはこのような回答を得ます:{"access_token":"sometoken","expires_in":300}; 2.1トークンはUTF-8形式でエンコードされているので、Java側ではURLDecoder.decode("sometoken", "UTF-8");を実行する必要がありますが、.NET側ではHttpUtility.UrlDecode("sometoken", System.Text.Encoding.UTF8);を実行する必要があります。

  3. 次のリクエストには認証ヘッダーを含める必要があります。あなたが言及する価値Client.Headers["authorization"] = "OAuth " + DecodedTokenString;

を使用することができます.NET側の間、Java側では、あなたはbuilder.header("authorization", "OAuth " + decodedTokenString);を行うTokenAccessPointのcd_webservice_conf.xmlで定義されているしsharedsecret(/Configuration/AuthenticationServer/SharedSecret/が)で定義されているしsharedsecretと同じにする必要があるということです(WebService)エンドポイントのcd_ambient_conf.xml(/Configuration/Security/SharedSecret/)。

サーバーから取得したトークンを正しくデコードしてもよろしいですか? 2つの設定ファイルに適切なSharedSecretを設定してもよろしいですか?

これが役に立ちます。

+0

こんにちはダニエル、早くこれを更新しないで申し訳ありません。あなたが正しく指摘したように、トークンの解読と、私たちの問題を引き起こしていた不正な設定値でした。すべて今良い。ありがとう、ジョン – John