使用TWTweetComposeViewController类的IOS 5.x.
一切都很顺利 if ( [TWTweetComposeViewController canSendTweet] )
除非用户在Twitter上撤消对该应用的访问权限,否则以上情况仍然属实,并且在尝试发送推文时会显示错误消息
Cannot be sent because the connection to Twitter failed.
如果用户转到SETTINGS / TWITTER / USERNAME
,则可以修复此问题将出现一条消息
The user name of password is incorrect.
如果重新输入密码,应用程序将在Twitter上重新验证,一切都很好。
1)无论如何在程序控制下捕获错误然后可以通知用户重做设置吗?
2)即使应用程序被撤销,为什么canSendTweet也是如此?
答案 0 :(得分:1)
1)否,因为这是系统级问题,所以不能直接从您的应用沙箱中控制或管理
2)canSendTweet只是确认可以在该设备上访问Twitter并且已经设置了帐户。它无意识别用户是否允许您访问其Twitter帐户。
如果您想知道您的应用是否可以访问Twitter用户,请使用:
- (void)requestAccessToAccountsWithType:(ACAccountType *)accountType
withCompletionHandler:(ACAccountStoreRequestAccessCompletionHandler)handler;
位于帐户框架
#import <Accounts/Accounts.h>
作为一个例子,这是一种方法:
accountStore = [[ACAccountStore alloc] init];
twitterAccountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];
[accountStore requestAccessToAccountsWithType:twitterAccountType
withCompletionHandler:^(BOOL granted, NSError *error) {
if (!granted) {
// Access denied by the user - do what you need to do
NSLog(@"Authenticated : User rejected access to his account.");
}
else {
// Access granted
// Do what you want here to send the tweet or whatever
}
}];
答案 1 :(得分:0)
将设备的时间和日期设置为当前时间以外的时间也可能导致此问题。在这种情况下,Twitter不允许您从“设置”应用程序进行身份验证,并且它还会导致TWTweetComposeViewController因“连接到Twitter失败”错误消息而失败,即使canSendTweet返回true也是如此。