2013-04-25 5 views
3

Я могу получить разрешения профиля пользователя, если пользователь установил учетную запись facebook в настройках своего iPhone. Для этого я использовал следующий код:facebook login using SDK

if(!_accountStore) 
    _accountStore = [[ACAccountStore alloc] init]; 

ACAccountType *facebookTypeAccount = [_accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook]; 

[_accountStore requestAccessToAccountsWithType:facebookTypeAccount 
             options:@{ACFacebookAppIdKey: @"app_id", ACFacebookPermissionsKey: @[@"email"]} 
            completion:^(BOOL granted, NSError *error) { 
             if(granted){ 
              NSArray *accounts = [_accountStore accountsWithAccountType:facebookTypeAccount]; 
              _facebookAccount = [accounts lastObject]; 
              NSLog(@"Success"); 

              [self me]; 
             }else{ 
              NSLog(@"go to iphone settings"); 

             } 
            }]; 






-(void)me 
    { 

    NSURL *meurl = [NSURL URLWithString:@"https://graph.facebook.com/me"]; 

    SLRequest *merequest = [SLRequest requestForServiceType:SLServiceTypeFacebook 
               requestMethod:SLRequestMethodGET 
                 URL:meurl 
               parameters:nil]; 

    merequest.account = _facebookAccount; 

    [merequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) { 
     NSString *meDataString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; 

     NSLog(@"%@", meDataString); 

    }]; 
} 

Если пользователь не установил его facebook аккаунт, то управление будет двигаться еще части, т.е. в настройках iPhone. В этой части я хочу открыть страницу входа в facebook, чтобы пользователь мог войти в свою учетную запись на facebook, не перейдя в настройки iPhone. Итак, как мы можем открыть вход в facebook через SDK. Пожалуйста, помогите мне в этом вопросе.

Заранее спасибо.

ответ

1

В этом случае, если вы не используете учетную запись пользователя (в случае, если он не настроен на iOS-параметры), вам необходимо реализовать SDK() в своем приложении. Это просто, просто выполните следующие шаги (https://developers.facebook.com/docs/getting-started/facebook-sdk-for-ios/).

После этого вы можете использовать метод FBSession's+openActiveSessionWithReadPermissions:allowLoginUI:completionHandler:, чтобы выполнить вход пользователя.

Чтобы быть правдой, в моем приложении, я даже не пытаюсь войти пользователь Apple, requestAccessToAccountsWithType:options:completion:; с новейшим Facebook SDK, поведение по умолчанию:

  1. Пытается войти с настройкой учетной записи пользователя в настройках iOS;
  2. Если аккаунт не найден, пытается открыть приложение Facebook для запроса входа/разрешения;
  3. Если приложение Facebook не установлено на устройстве, оно открывает Facebook на Safari в качестве резервной копии.
+0

Я получил «FBSessionStateClosedLoginFailed» при попытке войти в систему с помощью facebook, если в настройках телефона была настроена учетная запись facebook. Я не могу понять, почему это произошло. –