TwitterAPIでimageが上手く扱えない

Twitter APIで、account/update_profile_imageを使えば、アイコンが変更できる筈なのですが、今のところ不成功。

BASIC認証については、こちらを参考にさせていただいて上手くいったのですが、OAuthが今のところ上手くいっていません。

Googleここを見る限りなんとかなりそうな雰囲気なのですが・・・

自分のメモ用に上記を日本語訳しておくと


1. POST メソッドを利用する

2. OAuth signature baseのパラメータ使用(まあOAuth使おうとしているので当然ながら)

- Request method(.i.e POST in this case)
- Encoded API Url(.i.e "http://twitter.com/account/
update_profile_background_image.format" in this case)
- OAuth consumer key
- OAuth nonce
- OAuth Signature method
- OAuth timesatmp
- OAuth token
- OAuth version

3. OAuthパラメータとOAuth signatureはリクエストのヘダー部に配置する。
  ※これが他のメソッドを利用する場合と違うところ
  参考 OAuth Core 1.0a Authorization Header

4. その他必要なパラメータ類

ContentType = "multipart/form-data; boundary="+boundary

boundaryの例 = "----------------------------645033dcf9bb"

ContentLength = [request bodyの長さ(バイナリデータとしてのイメージ・データ分も含めて)]

5. Request Bodyの構成

仮に最終的なものを requestBody として

3 partに分けて:

初期状態 requestBody = ""

Part 1:

"--{0}\r\nContent-Disposition: form-data; name=\"{1}\"; filename=
\"{2}\"\r\nContent-Type: {3}\r\n\r\n"

{0} = boundary( ContentType headerで指定したものと同じもの)
{1} = "image"(アップロードしたいデータ種類を指定するフォームパラメータ この場合 "image")
{2} = [アップロードするファイル名 ex. AAAA.jpg ]
{3} = "image/[イメージデータの拡張子]", ex. "image/jpeg".

Now your requestBody = Part 1

Part 2:

ロードしようとているイメージデータのByte Stream が Part 2.
ex. $filedata = file_get_contents("AAA.jpg");

Now your requestBody = Part 1+Part 2.

Part 3:

"\r\n"+"--" + boundary(先に生成したのと同じもの) + "--"

最終的な requestBody = Part 1+Part 2+Part 3.

※ちなみに こちらのやり方も試してみたのですが、そもそも上手くリクエストが発行できないみたいです。
これで行けるなら楽勝だったのですが残念。