iphone - 如何使用 SA_OAuthTwitterEngine 在没有 PIN 的情况下从 iPhone 发布推文?

标签 iphone twitter oauth twitter-oauth mgtwitterengine

我正在开发一个 iPhone 应用程序,用于将推文发送到 twitter。为此,我使用 SA_OAuthTwitterEngine + MGTwitterEngine 类。

我将应用程序注册到www.twitter.com/apps,并传递消费者 key 和消费者 secret 来控制我的代码是这样的。

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。

以前,当应用程序类型为客户端时,我提供用户名和密码,然后控制从 Web View 返回到我的应用程序,但现在输入用户名和密码后,它无法关闭 ModalViewController,但显示选择并复制 PIN。

感谢您的宝贵时间以及您能给我的任何帮助!

最佳答案

这里是:只需替换 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;
    }
}

关于iphone - 如何使用 SA_OAuthTwitterEngine 在没有 PIN 的情况下从 iPhone 发布推文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5405665/

相关文章:

iphone - 在应用程序设置中设置 iPhone 应用程序语言有效,但应用程序名称不会更改

iphone - iOS:当手机旋转时,导航栏的 titleView 无法正确调整大小

ios - Cocoa Pods 未在应用程序内部更新

iphone - CGImageGetDataProvider 是否取决于图像类型?

javascript - Ember-Simple-Auth OAuth 2.0 没有发送正确的参数

asp.net-web-api - JwtBearerAuthenticationOptions 不包含 IssuerSecurityTokenProviders 的定义

java - Android - 如何检测用户是否选择使用 Intent 分享到 Facebook 或 Twitter?

sql-server - ColdFusion 执行不需要的 SQL 语句

javascript - Android Webview Javascript 将无法工作

ruby - 如何使用 Mechanize 单击 Magento 的授权应用程序页面上的 "Authorize"按钮