2011-03-23 43 views
2

我正在開發一個向Twitter發送推文的iPhone應用程序。爲此,我使用SA_OAuthTwitterEngine + MGTwitterEngine類。如何使用SA_OAuthTwitterEngine從iPhone發佈無PIN的推文?

我註冊了www.twitter.com/apps的應用程序,並將消費者密鑰和消費者密鑰傳遞給控制器​​,我的代碼是這樣的。

if(!_engine){ 
    _engine = [[SA_OAuthTwitterEngine alloc] initOAuthWithDelegate:self]; 
    _engine.consumerKey = slPcFUjUh5y1hex0zvEhPg; 
    _engine.consumerSecret = u6ydovMdP9yeiVqDukVhIzZPgJR9XDPUwfxymzNs; 
} 

UIViewController *controller = [SA_OAuthTwitterController controllerToEnterCredentialsWithTwitterEngine:_engine delegate:self]; 

if (controller){ 
    [self presentModalViewController: controller animated: YES]; 
    intTwitterFlag = 1; 
} 

以前在twitter.com/apps上我選擇應用程序類型=客戶端,我的應用程序將生成PIN和accessToken。但是,當我更改我的應用程序類型=瀏覽器時,它無法生成PIN和accessToken。

以前當應用程序類型是客戶端我給用戶名和密碼,然後控制從webview返回到我的應用程序,但現在輸入用戶名和密碼後,它不能dismissModalViewController,但顯示選擇和複製PIN。

謝謝你的時間和任何幫助,你可以給我!

回答

0

其更好地使用XAUTH路線移動應用

http://dev.twitter.com/pages/xauth

檢查XAuthTwitterEngine這對於MGTwitterEngine

+0

謝謝你的建議可以給我XAuthTwitterEngine例如SA_OAuthTwitterEngine。 – Apekshit 2011-03-24 07:05:56

+0

https://github.com/aral/MGTwitterEngineDemo顯然xAuthTwitterEngine已棄用,因爲MGTwitterEngine現在支持xauth和oauth – YNK 2011-03-24 09:15:11

+0

只是一個註釋..要使用xauth,您需要聯繫twitter並要求爲您的應用程序激活xauth – YNK 2011-03-24 09:18:34

1

我也面臨着同樣的問題,實現了XAuth和我只是刪除回調URL從嘰嘰喳喳應用設置。令我驚訝的登錄收益沒有任何問題。

+0

感謝它的工作對我來說:) :) – Ankur 2012-05-01 09:54:17

3

這是:剛剛在SA_OAuthTwitterController.m更換方法:

- (void) webViewDidFinishLoad: (UIWebView *) webView { 
    _loading = NO; 
    //[self performInjection]; 
    if (_firstLoad) { 
     [_webView performSelector: @selector(stringByEvaluatingJavaScriptFromString:) withObject: @"window.scrollBy(0,200)" afterDelay: 0]; 
     _firstLoad = NO; 
    } else { 
     /* 
     NSString     *authPin = [self locateAuthPinInWebView: webView]; 
     NSLog(@"authPin: %@", authPin); 
     if (authPin.length) { 
      [self gotPin: authPin]; 
      return; 
     } 

     NSString     *formCount = [webView stringByEvaluatingJavaScriptFromString: @"document.forms.length"]; 

     if ([formCount isEqualToString: @"0"]) { 
      [self showPinCopyPrompt]; 
     }*/ 

     //***************************************************** 
     // This is to bypass the pin requirement 
     // in case the call back URL is set in Twitter settings 
     //*****************************************************  
     [_engine requestAccessToken]; 
     if ([_delegate respondsToSelector: @selector(OAuthTwitterController:authenticatedWithUsername:)]) 
     { 
      [_delegate OAuthTwitterController: self authenticatedWithUsername: _engine.username]; 

     } 
     [self performSelector: @selector(dismissModalViewControllerAnimated:) withObject: (id) kCFBooleanTrue afterDelay: 1.0]; 

     //[self dismissModalViewControllerAnimated:YES]; 
    } 
    [UIView beginAnimations: nil context: nil]; 
    _blockerView.alpha = 0.0; 
    [UIView commitAnimations]; 

    if ([_webView isLoading]) { 
     _webView.alpha = 0.0; 
    } else { 
     _webView.alpha = 1.0; 
    } 
} 
+0

謝謝,它工作 – 2012-05-03 19:15:55

1

替換該方法

(void) webViewDidFinishLoad: (UIWebView *) webView 

在類SA_OAuthTwitterController.m效果很好。