Приложения не будут отображаться в настройках ›facebook, если учетная запись вошла в систему после установки приложения.

Я обнаружил странную проблему с настройкой учетной записи iOS. Когда я работаю над Проблема с обновлением ACAccount, я обнаружил, что если пользователи войдут в facebook в настройках устройства после установки моего приложения, мое приложение не сможет получить доступ к учетной записи facebook.

Чтобы быть точным, мое приложение не будет отображаться в разделе «РАЗРЕШИТЬ ЭТИ ПРИЛОЖЕНИЯ ИСПОЛЬЗОВАТЬ ВАШУ УЧЕТНУЮ ЗАПИСЬ». Поэтому я провел несколько тестов по этой проблеме:

(1). Вход в Facebook после установки приложения -> не отображается

(1–1). Удалите приложение и переустановите -> не отображается

(2). Повторный вход в Facebook после установки приложения -> не отображается, и все приложения, которые были предоставлены или не предоставлены, также не будут отображаться.

(3). Вход в Facebook перед установкой приложения -> показано

И, как только проблема возникла, она необратима, независимо от того, повторно войдете ли вы в facebook, переустановите приложения или перезапустите устройство, это не решит проблему. В списке останутся только собственные приложения для iOS и приложение Facebook.

Был старый вопрос о this, но ответа на этот вопрос нет. Кто-нибудь сталкивался с такой же проблемой?

Обновлено 2013.11.20, 11:38

Я сделал две ошибки при использовании ACAccount, ниже приведен пример кода для получения доступа к учетной записи facebook:

    // Check if store exists
if(!_accountStore)
    _accountStore = [[ACAccountStore alloc] init];

ACAccountType *facebookTypeAccount = [_accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];

// Request access, note that one should not check if the account is available until the access right is granted
[_accountStore requestAccessToAccountsWithType:facebookTypeAccount
                                       options:@{ACFacebookAppIdKey: @"FACEBOOK_API_KEY", ACFacebookPermissionsKey: @[@"read_stream"]}
completion:^(BOOL granted, NSError *error) {
    if(granted){
        NSArray *accounts = [_accountStore accountsWithAccountType:facebookTypeAccount];
        _facebookAccount = [accounts lastObject];
        NSLog(@"Success");
    }else{
        // ouch
        _facebookAccount = nil;
        NSLog(@"Failed, Error: %@", error);
        dispatch_async(dispatch_get_main_queue(), ^{
            NSString *message = [NSString stringWithFormat:@"No facebook account or access denied by user. Error:%@", error];
            UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"系統提示" message:message delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
            [alert show];
        });
    }

}];
  1. Я проверяю количество аккаунтов, прежде чем получить к нему доступ.

  2. Я не уверен, что это ошибка APPLE SDK, если я запрашиваю доступ к «publish_stream», запрос не будет выполнен.

Затем я увидел обсуждения ошибок, связанных с requestAccessToAccountsWithType, здесь. Говорят, что мы должны запрашивать разрешения дважды: одно для чтения и одно для записи.

Поэтому я меняю право доступа с «publish_stream» на «read_stream», и тогда все работает. Мое приложение снова отображается в списке.

Хотя запрос разрешения на запись не удался, но это не влияет на возможность публикации на поведение пользователя.

Обновлено 8.12.2014 00:31

maml сообщил, что в разрешении все еще может быть отказано после выполнения описанных выше действий, но приложение действительно отображается в настройках, что делает его можно включить.


person Hubert Wang    schedule 19.11.2013    source источник


Ответы (1)


Я решил проблему в обновлении своего вопроса. Может показаться, что это обходной путь, но в настоящее время проблема решена. Если вы хотите узнать подробности о решении, см. Отредактированный вопрос выше.

Для решения проблемы нам необходимо:

  1. Измените разрешение доступа с «publish_stream» на «read_stream». Несмотря на то, что вы запросили разрешение на чтение, вы все равно можете публиковать сообщения на временной шкале пользователя.

  2. Никаких дальнейших шагов.

Я думаю, это может быть ошибка фреймворка ACAccount. Однако изучение API Facebook сэкономило нам время. Итак, если вы используете этот метод, не забывайте следить за этой проблемой, которая может быть исправлена ​​в будущем.

Примечание. Я отвечаю на свою проблему, чтобы она не превратилась в перекати-поле ...

person Hubert Wang    schedule 27.02.2014
comment
Я испытал то же самое. Я последовал твоему решению. Запрос на доступ по-прежнему отклонен, но приложение отображается в настройках, и вы можете включить его, а затем публиковать сообщения. - person maml; 19.06.2014