認証について
- TwitterAuthClient.authorize()を使う
- アカウント連携画面の結果はTwitterAuthClient.onActivityResult()で受け取る
- TwitterAuthClient.authorize()は状態(authState)を持つ
- アカウント連携画面でキャンセルされた場合もTwitterAuthClient.onActivityResult()を経由させる。
- そうしないとauthStateが処理中のままになり、authorize()ができなくなる。
- 処理中を解除したい場合はTwitterAuthClient.cancelAuthorizeでキャンセル可能
画像のアップロードについて
- 画像のアップロードはTwitterアプリを使う方法(TweetComposer経由)と自分のアプリから行う方法(ComposerActivity経由)がある。
- ネットワーク上にあるファイルのアップロードは不可。一度ダウンロードする必要がある。
TweetComposerを使う場合
- FileProvider(ContentProvider)による提供
- Twitterアプリを使う方法ではアプリがインストールされていないとブラウザ経由になる
- ブラウザ経由の場合はイメージの自動投稿ができない
- ハッシュタグをbuilderから渡せない(textにつなげる)
Uri contentUri = FileProvider.getUriForFile(activity, BuildConfig.APPLICATION_ID + ".file_provider", newFile); new TweetComposer.Builder(activity) .image(contentUri) .text(text) .show();
ComposerActivityを使う場合
- contentスキーマ(content://)の場合はMediaStoreから取得可能なものしか投稿できない。FileProvider.getUriForFileはNG。
- ただし、ファイルスキーマ(file:)なら可能 Uri fileUri = Uri.fromFile(file); を使う
Uri fileUri = Uri.fromFile(newFile); final Intent intent = new ComposerActivity.Builder(activity) .session(session) .image(fileUri) .text(text) .hashtags(hashTags) .createIntent(); activity.startActivity(intent);