将Twitter整合到iPhone应用程序
我希望将Twitter整合到我的应用程序中。我的项目是用ARC
支持创建的。当我添加Twitter框架时,我还用-fno-objc-arc
标记了.m文件。将Twitter整合到iPhone应用程序
我可以登录到Twitter(即,身份验证过程起作用),并且在应用程序崩溃时,当我点击推文按钮后,身份验证。
1.)这是首先被调用,微博认证工作正常。
-(void)loginTwitterUser{
if(_engine) return;
_engine = [[SA_OAuthTwitterEngine alloc] initOAuthWithDelegate:self];
_engine.consumerKey = @"xxxxxx";
_engine.consumerSecret = @"xxxxxx";
if (![_engine isAuthorized]) {
UIViewController *controller = [SA_OAuthTwitterController controllerToEnterCredentialsWithTwitterEngine:_engine delegate:self];
if (controller) {
[self presentModalViewController:controller animated:YES];
}
}
-
_engine
- 我已经宣布这是.h
文件,但在.m
-
这就是我们要去的地方鸣叫
-(void)tweetThis:(id)sender{ [_engine sendUpdate:@"Tweet something"]; }
没有合成它
-
3.)其他delagate方法
#pragma mark SA_OAuthTwitterEngineDelegate
- (void) storeCachedTwitterOAuthData: (NSString *) data forUsername: (NSString *) username {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject: data forKey: @"authData"];
[defaults synchronize];
}
- (NSString *) cachedTwitterOAuthDataForUsername: (NSString *) username {
return [[NSUserDefaults standardUserDefaults] objectForKey: @"authData"];
}
#pragma mark TwitterEngineDelegate
- (void) requestSucceeded: (NSString *) requestIdentifier {
NSLog(@"Request %@ succeeded", requestIdentifier);
}
- (void) requestFailed: (NSString *) requestIdentifier withError: (NSError *) error {
NSLog(@"Request %@ failed with error: %@", requestIdentifier, error);
}
#pragma mark SA_OAuthTwitterController Delegate
在NSLog的username
是null
。为什么是这样 ?
- (void) OAuthTwitterController: (SA_OAuthTwitterController *) controller authenticatedWithUsername: (NSString *) username {
NSLog(@"Authenticated with user %@", username);
}
- (void) OAuthTwitterControllerFailed: (SA_OAuthTwitterController *) controller {
NSLog(@"Authentication Failure");
}
- (void) OAuthTwitterControllerCanceled: (SA_OAuthTwitterController *) controller {
NSLog(@"Authentication Canceled");
}
在MGTwitterEngine.m
应用程序崩溃的return语句。
- (NSString *)sendUpdate:(NSString *)status inReplyTo:(unsigned long)updateID
{
if (!status) {
return nil;
}
NSString *path = [NSString stringWithFormat:@"statuses/update.%@", API_FORMAT];
NSString *trimmedText = status;
if ([trimmedText length] > MAX_MESSAGE_LENGTH) {
trimmedText = [trimmedText substringToIndex:MAX_MESSAGE_LENGTH];
}
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithCapacity:0];
[params setObject:trimmedText forKey:@"status"];
if (updateID > 0) {
[params setObject:[NSString stringWithFormat:@"%u", updateID] forKey:@"in_reply_to_status_id"];
}
NSString *body = [self _queryStringWithBase:nil parameters:params prefixed:NO];
return [self _sendRequestWithMethod:HTTP_POST_METHOD path:path
queryParameters:params body:body
requestType:MGTwitterUpdateSendRequest
responseType:MGTwitterStatus];
}
我该如何解决这个问题?
检查您的SA_OAuthTwitterEngine.m并尝试执行下面的更改。您应该将http更改为https。
- (SA_OAuthTwitterEngine *) initOAuthWithDelegate: (NSObject *) delegate {
if (self = (id) [super initWithDelegate: delegate])
{
self.requestTokenURL = [NSURL URLWithString: @"https://twitter.com/oauth/request_token"];
self.accessTokenURL = [NSURL URLWithString: @"https://twitter.com/oauth/access_token"];
self.authorizeURL = [NSURL URLWithString: @"https://twitter.com/oauth/authorize"];
}
return self;
}
我已将http更改为https,但仍无法使用。 – 2013-04-17 10:55:11
你没有理由这么做,twitter集成已经优化。
检查这个链接http://www.raywenderlich.com/5519/beginning-twitter-in-ios-5
这不适用于iOS 4.我需要它适用于iOS 4和iOS 5 – Illep 2012-03-09 13:51:30
你正在使用哪个框架?原生iOS或第三方? – 2012-01-06 19:52:01
什么是崩溃错误? – Rayfleck 2012-01-06 20:46:46
我使用的推特库http://www.vivianaranha.com/TwitterLib.zip – Illep 2012-01-07 04:38:58