2015-11-16 5 views
0

Здравствуйте, ребята, мне нужна помощь. Мне нужен токен Facebook с необходимыми разрешениями, чтобы показать юбилея ...! Это является необходимым условием для моей регистрации API я смотрю на Facebook разработчика Я использую все методы, но я до сих пор данные на день рожденияiOS Facebook token Разрешения День рождения

#import <FBSDKCoreKit/FBSDKCoreKit.h> 
#import <FBSDKLoginKit/FBSDKLoginKit.h> 






- (IBAction)loginFaceboook:(id)sender { 

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 ([[FBSDKAccessToken currentAccessToken] hasGranted:@"publish_actions"]) { 
      // TODO: publish content. 
     } else { 

      FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init]; 
      [loginManager logInWithPublishPermissions:@[@"publish_actions"] 
            fromViewController:self 
               handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) { 
                //TODO: process error or result. 
               }]; 
     } 

     if ([result.grantedPermissions containsObject:@"email"]) 
     { 
      NSLog(@"result is:%@",result); 
      [self fetchUserInfo]; 
     } 
    } 
}]; 
} 
-(void)fetchUserInfo 
{ 

if ([FBSDKAccessToken currentAccessToken]) 
{ 

     // NSLog(@"Token is available : %@",[[FBSDKAccessToken  currentAccessToken]tokenString]); 

[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields": @"name, email, birthday"}] 
    startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { 
     if (!error) 
     { 
      NSLog(@"resultis:%@",result); 
      _auth_token = [[FBSDKAccessToken  currentAccessToken]tokenString]; 
      NSLog(@"Token Facebook is : %@",_auth_token); 

    ///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\\///\\\// /\\\///\\\///\\\\///\\\///\\\///\\\ 

      AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; 
      //[manager setResponseSerializer:[AFJSONResponseSerializer serializer]]; 
      manager.responseSerializer = [AFJSONResponseSerializer serializer]; 
      manager.requestSerializer = [AFJSONRequestSerializer serializer]; 
      NSDictionary *params = @{@"access_token":_auth_token}; 
      [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
      [manager POST:@"http:myUrl/api/facebook/" parameters:params success:^(NSURLSessionDataTask *operation, id responseObject) { 
       manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/plain"]; 
       if (responseObject) 
       { 
        NSLog(@"POST data JSON returned: %@", responseObject); 

        NSLog(@"DATA SEND OK"); 

       } 
      } failure:^(NSURLSessionDataTask *task, NSError *error) { 
       NSLog(@"ERROR NO SEND DATA FROM FACEBOOK.. %@", error); 
      }]; 

      _LoginFacebook.alpha=0; 
Menu *VC2 = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewController"]; 
[VC2 setModalTransitionStyle:(UIModalTransitionStyleCrossDissolve)]; 
[self presentViewController:VC2 animated:YES completion:nil ]; 

      NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
      [prefs setObject:self.auth_token forKey:@"tokenF"]; 
      [prefs synchronize]; 
      NSLog(@"Saved Toke %@",prefs); 
     } 
     else 
     { 
      NSLog(@"Error %@",error); 
     } 
    }]; 

} 

} 

Информация из консоли данные верны, но обмениваются на х не обеспечивают персональная информация

email = "[email protected]"; 
id = xxxxxxxxxxxxxxxxx; 
name = "xxxxxxxxxxx"; 
Token Facebook is : xxxxxxxxxxxxxxxx......! 

ответ

0

Во время написания кода

[login logInWithReadPermissions:@[@"email"] 

Добавить "public_profile" по остроумию ч что

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

Проверьте, работает ли оно!

EDIT

Как уже упоминалось CBroe, нам нужно user_birthday разрешение, и я предполагаю, что в настоящее время мы должны взять одобрение от Facebook для этого разрешения

enter image description here

+0

День рождения не является па rt public_profile, ему нужно разрешение 'user_birthday'. – CBroe

+0

oh ... да, это не часть public_profile. Я думаю, что на день рождения нам нужно сначала получить одобрение от Facebook –

+0

Да, я пытаюсь использовать этот FBSDKLoginManager * login = [[FBSDKLoginManager alloc] init]; [login setLoginBehavior: FBSDKLoginBehaviorNative]; [login logInWithReadPermissions: @ [@ "public_profile", @ "email"] fromViewController: nil handler:^(FBSDKLoginManagerLoginResult * result, ошибка NSError *) { }, но не показывает мне день рождения. – user3365028

0

Это работает для меня

- (IBAction)loginFaceboook:(id)sender { 

FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init]; 
[login setLoginBehavior:FBSDKLoginBehaviorNative]; 
[login logInWithReadPermissions:@[@"public_profile",@"user_birthday"] fromViewController:nil handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) { 

    if (error) 
    { 
     // Process error 
    } 
    else if (result.isCancelled) 
    { 
     // Handle cancellations 
    } 
    else 
    { 
     if ([[FBSDKAccessToken currentAccessToken] hasGranted:@"publish_actions"]) { 
      // TODO: publish content. 
     } else { 

      FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init]; 
      [loginManager logInWithPublishPermissions:@[@"publish_actions"] 
            fromViewController:self 
               handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) { 
                //TODO: process error or result. 
               }]; 
     } 

     if ([result.grantedPermissions containsObject:@"email"]) 
     { 
      NSLog(@"result is:%@",result); 
      [self fetchUserInfo]; 
     } 
    } 
}]; 
} 
Смежные вопросы