TWTweetComposeViewController cansendtweet верно, даже если пользователь отозвал приложение в Twitter - PullRequest
0 голосов
/ 20 марта 2012

IOS 5.x с использованием класса TWTweetComposeViewController. Все хорошо даже с

 if ( [TWTweetComposeViewController canSendTweet] )

ЕСЛИ пользователь отменяет доступ к приложению в твиттере, то вышеприведенное остается верным, и при попытке отправить твит появляется сообщение об ошибке с

Cannot be sent because the connection to Twitter failed.

Это может быть исправлено, если пользователь переходит к SETTINGS / TWITTER / USERNAME

появится сообщение

The user name of password is incorrect.

Если пароль будет набран повторно, приложение будет аутентифицировано в твиттере, и все снова в порядке.

1) В любом случае можно зафиксировать ошибку под управлением программы, а затем сообщить пользователю, что нужно повторить настройки?

2) Почему canSendTweet верен, даже если приложение было отозвано?

Ответы [ 2 ]

1 голос
/ 26 июня 2012

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
                         } 
                     }];
0 голосов
/ 19 июня 2013

Эта проблема также может быть вызвана установкой времени и даты вашего устройства на время, отличное от текущего времени.В этом случае Twitter не разрешает вам проходить аутентификацию из приложения «Настройки», а также приводит к сбою TWTweetComposeViewController с сообщением об ошибке «сбой подключения к Twitter», хотя canSendTweet возвращает true.

...