0

まず、私のプロジェクトでは独自のモジュールを作成する必要があるため、そこにあるさまざまなパッケージや製品を使用できません。そうは言っても、正しいトークン、consumer_key、c​​onsumer_secret、および token_secret 変数を使用して、正しい基本署名文字列を作成し、その文字列から OAuth 署名を作成すると、ColdFusion モジュールを介して Twitter データを取得するのに何の問題もありませんでした。どちらかがオフになっていると、Twitter のデータを取得することさえできません。

変数が正しいことを知っていても、ColdFusion を介して自分の Twitter アカウントに簡単なステータス ツイートを投稿することはまだできません。試行するたびに、「コード:32、メッセージ:'認証できませんでした'」という同じエラーが表示されます。変数ではないことはわかっているので、ColdFusion 経由で POST を送信する方法に違いはありませんが、何が間違っているのかわかりません。以下は、POST を送信するために使用するコードです。

<cfhttp url="https://api.twitter.com/1.1/statuses/update.json" method="POST" throwonerror="yes" >
    <cfhttpparam type="header" name="Authorization" value='OAuth oauth_consumer_key="#oauthStruct.oauth_consumer_key#", oauth_nonce="#oauthStruct.oauth_nonce#", oauth_signature="#oauthStruct.oauth_signature#", oauth_signature_method="#oauthStruct.oauth_signature_method#", oauth_timestamp="#oauthStruct.oauth_timestamp#", oauth_token="#oauthStruct.oauth_token#", oauth_version="#oauthStruct.oauth_version#"'>
    <cfhttpparam type="header" name="Content-Type" value="application/x-www-form-urlencoded">
    <cfhttpparam type="formfield" name="status" value="#oauthStruct.status#">
</cfhttp>

誰かが上記のコードを調べて、何かが足りないか、この呼び出しを間違って送信しているかどうかを理解するのを手伝ってもらえますか?

更新: 上記のコードを次のように変更しました。

    <cfhttp url="https://api.twitter.com/1.1/statuses/update.json" method="POST" throwonerror="yes" >
        <cfhttpparam type="header" name="Authorization" value='OAuth oauth_consumer_key="#oauthStruct.oauth_consumer_key#", oauth_nonce="#oauthStruct.oauth_nonce#", oauth_signature="#oauthStruct.oauth_signature#", oauth_signature_method="#oauthStruct.oauth_signature_method#", oauth_timestamp="#oauthStruct.oauth_timestamp#", oauth_token="#oauthStruct.oauth_token#", oauth_version="#oauthStruct.oauth_version#"'>
        <cfhttpparam type="header" name="Content-Type" value="application/x-www-form-urlencoded">
        <cfhttpparam type="header" name="oauth_consumer_key" value="#oauthStruct.oauth_consumer_key#">
        <cfhttpparam type="header" name="oauth_nonce" value="#oauthStruct.oauth_nonce#">
        <cfhttpparam type="header" name="oauth_signature" value="#oauthStruct.oauth_signature#">
        <cfhttpparam type="header" name="oauth_signature_method" value="#oauthStruct.oauth_signature_method#">
        <cfhttpparam type="header" name="oauth_timestamp" value="#oauthStruct.oauth_timestamp#">
        <cfhttpparam type="header" name="oauth_token" value="#oauthStruct.oauth_token#">
        <cfhttpparam type="header" name="oauth_version" value="#oauthStruct.oauth_version#">
        <cfhttpparam type="body" value="#signature_string#">
    </cfhttp>

それでも機能しません。同じ認証エラーです。他のアイデアはありますか?

4

1 に答える 1

0

私はそれを考え出した。新しいAPI(1.1)を使用して、このプロセスがどのように進行するかを他の人が理解できるように、これは、Twitterアカウントにステータスの更新を投稿する方法です。

    <cfhttp url="https://api.twitter.com/1.1/statuses/update.json" method="POST" throwonerror="yes" >
        <cfhttpparam type="header" name="Authorization" value='OAuth oauth_consumer_key="#oauthStruct.oauth_consumer_key#", oauth_nonce="#oauthStruct.oauth_nonce#", oauth_signature="#oauthStruct.oauth_signature#", oauth_signature_method="#oauthStruct.oauth_signature_method#", oauth_timestamp="#oauthStruct.oauth_timestamp#", oauth_token="#oauthStruct.oauth_token#", oauth_version="#oauthStruct.oauth_version#"'>
        <cfhttpparam type="header" name="Content-Type" value="application/x-www-form-urlencoded">
        <cfhttpparam type="body" value="status=#oauthStruct.status#">
    </cfhttp>

Authorizationヘッダーパラメーターがない場合、400BadRequestエラーが発生しました。上記のように、デジタル署名を含むすべての必要なOAuthパラメーターをコンマ区切りのリストに入れて、コンテンツタイプを示します。最も重要なのは、cfhttp呼び出しのbodyパラメーターの残りの変数をURLクエリ文字列として提供することです。 。

于 2012-11-15T22:35:25.103 に答える