我正在开发一个向twitter发送推文的iPhone应用程序。为此我使用SA_OAuthTwitterEngine + MGTwitterEngine类。
我将应用程序注册到www.twitter.com/apps并将Consumer key和Consumer 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上我选择了Application type = client,我的应用程序将生成PIN和accessToken。但是,当我更改我的应用程序类型=浏览器时,它无法生成PIN和accessToken。
以前当应用程序类型是客户端时,我提供用户名和密码,然后从webview控制返回我的应用程序,但现在输入用户名和密码后,它不能解除ModalViewController但显示选择并复制PIN。
感谢您的时间和任何可以给我的帮助!
答案 0 :(得分: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;
}
}
答案 1 :(得分:1)
我也遇到了同样的问题,我刚从twitter app设置中删除了回调网址。我的意外登录收益没有任何问题。
答案 2 :(得分:1)
替换此方法
(void) webViewDidFinishLoad: (UIWebView *) webView
课程SA_OAuthTwitterController.m
中的效果很好。
答案 3 :(得分:0)