メモ:imguRでOAuthトークンを使う方法

imguRパッケージは便利なんだけど、デフォルトのAPIキーで使えてしまうので自分のアカウントにアップロードしたつもりがそうなってなかった、というメモ。

imgur.com

ヘルプにはこんな風に書かれています。

Usage
upload_image(file, title = NULL, description = NULL, album = NULL,
             name = NULL, type = 'file', ...)
imgur_upload(file, title = NULL, description = NULL, album = NULL,
             name = NULL, type = 'file', ...)

Arguments
(略)

... Other arguments passed to HTTP request functions, for example: token (an OAuth2.0 token) or key (an API key, used by default).

httrへのトークンの渡し方はいろいろあって、それは以前に書いたので興味ある方はそっちも読んでください。

notchained.hatenablog.com

まあとにかくドキュメントに「Other arguments passed to HTTP request functions」とあるので、そのまま渡されるのだと信じていたら、違ったという話です。

まず、imgur_login()でOAuth2.0のトークンが手に入ります。

library(imguR)
token <- imgur_login()

で、これを使うわけですが、

upload_image("path/to/file.png", token)

と渡してもだめで、

upload_image("path/to/file.png", config = list(token = token))

と渡してもだめ。

正解は、

upload_image("path/to/file.png", token = token)

というのを実装を見てようやく理解しました。

厄介なのは、間違えるとエラーになるんじゃなくて匿名でアップロードされてしまうところなんですよね…。まあ匿名アップロードは非公開でURLを知っている人間以外アクセスできないので、まずい画像をアップロードしてしまったとしてもそれほどあわてる必要はありません。ただ、APIから返ってくるdeletehashをメモるのを忘れると消せなくなるので注意。

Posts uploaded without an account are anonymous and hidden. They cannot be searched and only those people with whom you share the URL will be able to see it. (Post, Album and Image Privacy – Imgur)