26
AuthTwitterEngine ASIHTTPRequest を使ってTwitPicに投稿する 沖田@tmokita 121117日土曜日

Wtidev 0430 tmoktia

Embed Size (px)

Citation preview

xAuthTwitterEngine

ASIHTTPRequestを使ってTwitPicに投稿する

沖田@tmokita

12年11月17日土曜日

自己紹介• 沖田ともひこ• フリープログラマ• 以前は組み込みとかゲームとか

• Twitter:@tmokita

• お仕事ください

12年11月17日土曜日

• いまどきTwitter連携くらいしないと(*´・ω・)(・ω・`*)ネー

• 画像系アプリなら画像も投稿したいよ(*´・ω・)(・ω・`*)ネー

今回の発表の背景

12年11月17日土曜日

参考サイト• MetaArt

TwitPicへ投稿するiPhoneアプリが出来るまでhttp://iphone.moo.jp/app/?p=571

• 非常に参考になりましたありがとうございます

12年11月17日土曜日

申請とかしておいてね!

• TwitterにxAuthの申請をしてAPIキーなどを取得しておくhttps://dev.twitter.com/

• TwitPicに申請してAPIキーを取得しておくhttp://dev.twitpic.com/

12年11月17日土曜日

TwitPic→Twitterポストするまでの流れ• AccessToken取得

• TwitPicにポスト

• レスポンスからTwitPicのURLを取得

• TwitPicのURLをTwitterにポスト

12年11月17日土曜日

XAuthTwitterEngineDemoをベースにTwitPic投稿を実装してみる

12年11月17日土曜日

Twitterへのポスト(1/1)

• XAuthTwitterEngineDemoViewController.h

ConsumerKeyConsumerSecretを定義する

12年11月17日土曜日

• ここまでTwitterへのポスト

12年11月17日土曜日

TwitPicへのポスト(1/7)

• twitpicpac をプロジェクトに追加

12年11月17日土曜日

• 必要なフレームワークを追加CFNetwork.frameworkMobileCoreServices.frameworkSystemConfiguration.frameworklibxml2.dyliblibz.1.2.3.dylib

• libXmlのパスを追加(ヘッダ検索パス)${SDKROOT}/usr/include/libxml2

TwitPicへのポスト(2/7)

12年11月17日土曜日

• 投稿する画像を追加

PostImage.jpg

TwitPicへのポスト(3/7)

12年11月17日土曜日

• createOAuthEchoRequestuploadToTwitterByTwitPic2つのメソッドをコピペさせて頂く

• #import "ASIFormDataRequest.h"#import "OAMutableURLRequest.h"

TwitPicへのポスト(4/7)

12年11月17日土曜日

• uploadToTwitterByTwitPic の編集

jsonをxmlにする

TwitPicのキーを設定する削除

TwitPicへのポスト(5/7)

APIキーはhttp://dev.twitpic.com/apps/

で確認できる

12年11月17日土曜日

• ASIHTTPRequestDelegate

• #import "ASIHTTPRequestDelegate.h"

TwitPicへのポスト(6/7)

12年11月17日土曜日

• ボタンを押したときの処理を変更

TwitPicへのポスト(7/7)

12年11月17日土曜日

• ここまでTwitPicへのポスト

12年11月17日土曜日

TwitPicのURLをTwitterにポストする

(1/3)

<?xml version="1.0" encoding="UTF-8"?><image> <id>XXXXXX</id> <text>Testing xAuth from the XAuthTwitterEngineDemo!</text> <url>http://twitpic.com/XXXXXX</url> <width>256</width> <height>256</height> <size>56123</size> <type>jpg</type> <timestamp>Fri, 29 Apr 2011 12:05:43 +0000</timestamp> <user> <id>123456789</id> <screen_name>tmokita</screen_name> </user></image>

• TwitPicからのレスポンス

12年11月17日土曜日

• URLを取得してTwitterにポストする

• #import "XPathQuery.h"

xPath

TwitPicのURLをTwitterにポストする

(2/3)

12年11月17日土曜日

• ポスト結果(Echofonで見た画面)

TwitPicのURLをTwitterにポストする

(3/3)

12年11月17日土曜日

• めでたしめでたし

12年11月17日土曜日

おまけメモ(1/3)

AccessTokenは一度取得すればOK

認証からポストまで一気にやろうとする場合にちょっとはまった点。TwitterEngine::exchangeAccessTokenForUsername

でアクセストークン取得出来るが、その値が返ってくるdelegate

メソッド、storeCachedTwitterXAuthAccessTokenString

これが呼ばれたときは、まだTwitterEngineのaccessTokenプロパティに値が入っていない。なので、ここからポストする場合は一旦performSelectorとかで抜けてからやる必要がある。

12年11月17日土曜日

XAuthTwitterEngineDelegateASIHTTPRequestDelegateを書いといておけばそれぞれのdelegateがくる TwitterEngine::sendUpdateの方は- (void)requestSucceeded:(NSString *)connectionIdentifier- (void)requestFailed:(NSString *)connectionIdentifier withError:(NSError *)errorが、ASIの方は-(void)requestFinished:(ASIHTTPRequest*)request-(void)requestFailed:(ASIHTTPRequest*)requestが、呼ばれる。

おまけメモ(2/3)

12年11月17日土曜日

おまけメモ(3/3)

なので、認証から一気にやる場合、1:TwitterEngine::exchangeAccessTokenForUsername2:TwitterEngine::storeCachedTwitterXAuthAccessTokenString (Delegate)3:2からperformSelectorとかで適当なメソッド呼ぶ4:uploadToTwitterByTwitPic (ブログのメソッド)

5:ASI::requestFinished (Delegate)6:TwitterEngine::sendUpdate7:TwitterEngine::requestSucceeded (Delegate)っていう感じになる。

12年11月17日土曜日

• ご清聴ありがとうございました

12年11月17日土曜日