2011-03-23 61 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效果很好。