0

Microsoft 翻訳サービスを呼び出す前に、トークンが必要です。これらの指示のステップ 3に従おうとしています 。トークンを取得するには、トークン サービスの呼び出しが必要です。clientId とシークレット パスがあります。サービスhttp://api.microsofttranslator.com/V2/soap.svcの署名を見てきました。方法が見えます GetAppIdToken。その署名は、ドキュメントで暗示されているものとはかなり異なります。

説明ページで言及されているサービス操作を知っている人はいますか? WSDL とドキュメントが一致していないようです。別のサービスはありますか?

説明書


問題の解決方法の説明

EDIT : このツールを Web で見つけて、動作するはずのトラフィックを追跡できるようにしました http://oauthdevconsole.cloudapp.net/PartialOAuth

EDIT2:ここで登録する方法のより良い説明 http://blogs.msdn.com/b/translation/p/gettingstarted1.aspx

4

2 に答える 2

2

この記事に含まれているコード サンプルは、これを行う方法を示しています。すべてがどのように組み合わされるかを理解するには、少し掘り下げる必要がありますが、一言で言えば、WebRequest「POST」メソッドで を使用し、その POST で 4 つの必要な値を渡します。サンプル コードを見ることをお勧めしますが、基本的な要素に絞り込むと、次のようになります。

string request = string.Format("grant_type=client_credentials&client_id={0}&client_secret={1}&scope=http://api.microsofttranslator.com", HttpUtility.UrlEncode(clientId), HttpUtility.UrlEncode(clientSecret));
WebRequest webRequest = WebRequest.Create("https://datamarket.accesscontrol.windows.net/v2/OAuth2-13");
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.Method = "POST";
byte[] bytes = Encoding.ASCII.GetBytes(request);

webRequest.ContentLength = bytes.Length;

using (Stream outputStream = webRequest.GetRequestStream())
{
    outputStream.Write(bytes, 0, bytes.Length);
}

using (WebResponse webResponse = webRequest.GetResponse())
{
    DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(AdmAccessToken));
    //Get deserialized object from JSON stream
    AdmAccessToken token = (AdmAccessToken)serializer.ReadObject(webResponse.GetResponseStream());
    return token;
}

上記のコードの大部分はprivate AdmAccessToken HttpPost(string DatamarketAccessUri, string requestDetails)、サンプルのメソッドにあります。

これAdmAccessTokenは、戻り値のプロパティを持つ、サンプルで定義されたクラスです。

アクセストークン
token_type
expires_in
範囲

これは非常に包括的なサンプルであり、関連する部分を取得するために少し掘り下げる必要がありますが、私が知る限り、すべてがそこにあります。私が投稿したスニペットは、簡単にするために、サンプルの他の場所で行われたいくつかのことを単純に組み合わせたものです。

于 2013-05-11T07:56:21.777 に答える