Как я могу определить разницу между приложением, не имеющим доступа к Твиттеру, и Твиттером, не имеющим настройки учетных записей?

Я понимаю, как запросить доступ к Твиттеру, используя:

requestAccessToAccountsWithType:withCompletionHandler:

Но это вызывает диалог, если приложение не авторизовано. Как я могу автоматически проверить, авторизовано ли приложение?

Я могу проверить количество учетных записей, используя:

 NSArray *twitterAccounts = [store accountsWithAccountType:twitterAccountType];

Но я верну пустой массив, если приложение не авторизовано И если нет доступных учетных записей. Я не вижу способа выяснить, какой из них имеет место.

Чтобы уточнить, мне нужно указать разницу между следующими случаями:

  1. Пользователь не предоставил приложению разрешение на использование Twitter.
  2. Пользователь предоставил разрешение, но не настроил ни одной учетной записи Twitter.

Существует также TWTweetComposeViewController canSendTweet, который вернет true, если приложение авторизовано И существует хотя бы одна настройка учетной записи. Однако, опять же, это не дает мне возможности определить разницу между двумя случаями, если он возвращает false.


person Undistraction    schedule 12.07.2012    source источник
comment
Я не понимаю, зачем это нужно? В любом случае, вы не можете получить доступ к учетной записи пользователя в Твиттере... следовательно, canSendTweet   -  person marko    schedule 13.07.2012
comment
@soemarko ridwan У меня есть кнопка «Поделиться в Twitter» в альбомной ориентации. Кнопка имеет вторую метку. Я хотел бы информировать пользователя о статусе Twitter, используя этот ярлык. Я хотел бы иметь возможность сказать «Нет доступных учетных записей Twitter» или «Неавторизованный». Я знаю, что не могу получить доступ к учетной записи пользователя без его разрешения. Я ни в коем случае не говорю, что это то, чего я хочу.   -  person Undistraction    schedule 13.07.2012
comment
Похоже, что второй сценарий, когда пользователь предоставил разрешение, но не настроил ни одной учетной записи Twitter, невозможен. По крайней мере, в iOS 6, если у пользователя нет настроенных учетных записей Twitter, iOS отказывает в доступе, т. е. в блоке завершения для requestAccessToAccountsWithType:withCompletionHandler: granted всегда устанавливается на NO.   -  person Simon Whitaker    schedule 30.10.2012


Ответы (1)


Похоже, что для каждого типа учетной записи есть свойство accessGranted, которое вы можете проверить, чтобы узнать, авторизованы ли вы для его использования: http://developer.apple.com/library/ios/#DOCUMENTATION/Accounts/Ссылка/ACAccountTypeClassRef/Reference/Reference.html#//apple_ref/doc/uid/TP40011022

Поэтому я бы сначала проверил, авторизованы ли вы, и если да, тогда извлеките список учетных записей Twitter и посмотрите, есть ли что-нибудь в массиве.

person Jay Neely    schedule 12.07.2012
comment
Ах. Где-то я не смотрел. Большое спасибо. - person Undistraction; 14.07.2012
comment
Также стоит отметить, что кажется, что ACAccountType::accessGranted всегда возвращает false в симуляторе; даже если установлена ​​учетная запись Twitter, это свойство всегда будет отображаться как false для типа ACAccount ACAccountTypeIdentifierTwitter. - person Undistraction; 16.07.2012
comment
Между прочим, это очень глючный API. Он часто возвращает false, несмотря на то, что приложение авторизовано, и даже если оно с радостью позволит вам получить доступ к Twitter. - person Undistraction; 01.08.2012