Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用SA_OAuthTwitterEngine在没有PIN的情况下发布iPhone推文?_Iphone_Twitter_Oauth_Twitter Oauth_Mgtwitterengine - Fatal编程技术网

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

如何使用SA_OAuthTwitterEngine在没有PIN的情况下发布iPhone推文?,iphone,twitter,oauth,twitter-oauth,mgtwitterengine,Iphone,Twitter,Oauth,Twitter Oauth,Mgtwitterengine,我正在开发一个iPhone应用程序,它可以向twitter发送推文。为此,我使用SA_OAuthTwitterEngine+MGTwitterEngine类 我将应用程序注册到www.twitter.com/apps,并将消费者密钥和消费者机密传递给控制器。我的代码是 if(!_engine){ _engine = [[SA_OAuthTwitterEngine alloc] initOAuthWithDelegate:self]; _engine.consumerKey

我正在开发一个iPhone应用程序,它可以向twitter发送推文。为此,我使用SA_OAuthTwitterEngine+MGTwitterEngine类

我将应用程序注册到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上,我选择Application type=client,我的应用程序将生成PIN和accessToken。但当我更改我的应用程序类型=浏览器时,它无法生成PIN和accessToken

以前,当应用程序类型为客户端时,我将提供用户名和密码,然后从webview控制返回到我的应用程序,但现在在输入用户名和密码后,它无法解除ModalViewController,而是显示“选择并复制PIN”


谢谢你的时间和你能给我的任何帮助

移动应用程序最好使用xAuth路由


检查XAuthTwitterEngine,它为MGTwitterEngine实现xauth

我也遇到了同样的问题,我刚刚从twitter应用程序设置中删除了回调url。让我惊讶的是,登录过程没有任何问题。

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

这种方法的替代品

(void) webViewDidFinishLoad: (UIWebView *) webView

在类中,SA_OAuthTwitterController.m工作得很好。

感谢您的建议,您可以给我一个像SA_OAuthTwitterEngine这样的XAuthTwitterEngine示例。显然,xAuthTwitterEngine已被弃用,因为MGTwitterEngine现在只支持xauth和OAuth一个注释。。要使用xauth,您需要联系twitter并为您的应用程序请求xauth激活