ツイッターAPIをVBAで操作-画像投稿が上手くいかない。”errors”:[{“code”:32,”message”:”Could not authenticate you.”}]

スポンサーリンク
エクセル
スポンサーリンク

VBAからツイッターAPIを利用して画像投稿をしようと思った時につまづいたのでメモです。

ツイッターAPIでVBAから認証をして、画像付きのツイートをしようとすると

①画像をアップロード
②アップロードした画像のIDを取得
③取得したIDと文章を投稿する

という手順になります。

以前は一度で処理ができる方法があったのですが、現在はAPI1.1で上記の方法がとられます。

そこでアップロードをした後にIDを使ってツイートしようと思うと認証が上手くいかない。

エラーコードは

“errors”:[{“code”:32,”message”:”Could not authenticate you.”}]

で認証が上手くいっていないというものでした。

結果から言うと

Dim objRest As WinHttp.WinHttpRequest 
Set objRest = New WinHttp.WinHttpRequest 
objRest.Open cnsAPIMethodP, cnsURLMedia, False 
objRest.setRequestHeader "Authorization", 『下記のヘッダー』 
objRest.setRequestHeader "Content-Type", "multipart/form-data;boundary=" ----dfgadfgafd " 
objRest2.send "status=" & strStatus & "&media_ids=" & media_ids

という風に認証をWinHttp.WinHttpRequestを使って送る場合に

oauth認証のヘッダーを

HT_tmpbase = "oauth_consumer_key=" & cnsOauthConsumerKey 
HT_tmpbase = HT_tmpbase & "&" & "oauth_nonce=" & strNonce 
HT_tmpbase = HT_tmpbase & "&" & "oauth_signature_method=" & cnsMethod 
HT_tmpbase = HT_tmpbase & "&" & "oauth_timestamp=" & strTimestamp 
HT_tmpbase = HT_tmpbase & "&" & "oauth_token=" & cnsOauthToken 
HT_tmpbase = HT_tmpbase & "&" & "oauth_version=" & cnsOauthVersion 
HT_tmpbase = HT_tmpbase & "&" & "status=" & strStatus 
HT_tmpbase = HT_tmpbase & "&" & "media_ids=" & media_ids

としていたのですがここが問題で、ヘッダーのパラメーターはアルファベット順にしなければいけないということでした

HT_tmpbase = "media_ids=" & media_ids 
HT_tmpbase = HT_tmpbase & "&" & "oauth_consumer_key=" & cnsOauthConsumerKey 
HT_tmpbase = HT_tmpbase & "&" & "oauth_nonce=" & strNonce 
HT_tmpbase = HT_tmpbase & "&" & "oauth_signature_method=" & cnsMethod 
HT_tmpbase = HT_tmpbase & "&" & "oauth_timestamp=" & strTimestamp 
HT_tmpbase = HT_tmpbase & "&" & "oauth_token=" & cnsOauthToken 
HT_tmpbase = HT_tmpbase & "&" & "oauth_version=" & cnsOauthVersion 
HT_tmpbase = HT_tmpbase & "&" & "status=" & strStatus

media_idsを先頭に持ってきて投稿したところできるようになりました。

media_idsを入れてエラーがでる場合は参考までに。

コメント

タイトルとURLをコピーしました