Внедрение 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"]