Внедрение FBSDK (New Facebook SDK 4.0) не работает для входа с Facebook

Я использую этот следующий блок, который упоминается в Facebook Developer. Но когда мои приложения обращаются от браузера, он всегда возвращает результат Отменен.

FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login logInWithReadPermissions:@[@"email"]     
        handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
  if (error) {
        // Process error
   }
  else if (result.isCancelled) {
        // Handle cancellations
   }
   else {
       // If you ask for multiple permissions at once, you
       // should check if specific permissions missing
       if ([result.grantedPermissions containsObject:@"email"]) {
        // Do work
       }
  }
 }];

это обновление появилось 25 марта 15,

Если кто-то использовал это, пожалуйста, поделитесь им со мной.

Ссылка: https://developers.facebook.com/docs/ios/getting-started

Ответы

Ответ 1

Вы не можете получить идентификатор электронной почты от входа в Facebook.... почему???

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

Проверьте этот сценарий. Это может случиться, мы не можем обвинить его в FBSDK.

Надеюсь, что это очистит некоторые моменты.

Ответ 2

Вы должны добавить следующий метод в свой appDelegate

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    return [[FBSDKApplicationDelegate sharedInstance] application:application
                                                          openURL:url
                                                sourceApplication:sourceApplication
                                                       annotation:annotation];
}

Если вышеуказанный метод не присутствует в AppDelegate, он переходит в состояние отмены.

Обратитесь к: https://developers.facebook.com/docs/ios/getting-started#startcoding

Ответ 3

Вы используете этот простой блок с ожидаемыми требованиями

if ([FBSDKAccessToken currentAccessToken])
{
      [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:nil]
                 startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id user, NSError *error)
       {
           if (!error)
           {
            //  NSDictionary *dictUser = (NSDictionary *)user;
            // This dictionary contain user Information which is possible to get from Facebook account.
           }
        }];
}

Токен доступа, который вы получите только и только после успешного входа в систему

Надеюсь, это поможет вам

Ответ 4

Чтобы получить профиль пользователя, попробуйте

if ([FBSDKAccessToken currentAccessToken])
                {
                    [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:nil]
                     startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id user, NSError *error)
                     {
                         if (!error) {
                             NSDictionary *dictUser = (NSDictionary *)user;
                             self.txfName.text      = [dictUser objectForKeyNotNull:@"name"];
                             self.txfEmail.text     = [dictUser objectForKeyNotNull:@"email"];
                             self.txfUserName.text  = [[dictUser objectForKey:@"first_name"] lowercaseString];
                             NSLog(@"image : https://graph.facebook.com/%@/picture?type=small",[dictUser objectForKeyNotNull:@"id"]);
                         }
                     }];
                }

Надеюсь, это поможет вам.

Ответ 5

Для меня следующая строка вызвана isCancelled всегда быть правдой... idk why

[login logInWithReadPermissions:@[@"public_profile", @"email", @"gender"] 

После перехода на это... он работал

[login logInWithReadPermissions:@[@"public_profile"]