2014-01-31 2 views
0

вот мой код, который работает правильно, но я хочу использовать кнопку по умолчанию LoginWithFacebook, которая предоставляется facebook. Есть ли изображение, предоставленное facebook, тогда, пожалуйста, дайте мне предложение. Thankx заранее .....Как использовать Default LoginWithFacebook Button в моем коде

#import "FacebbokViewController.h" 
    #import "UserAppAppDelegate.h" 

    @interface FacebbokViewController() 

    @end 

    @implementation FacebbokViewController 

    - (id)init 
    { 
     self = [super init]; 
     if (self) { 
      // Custom initialization 
     } 
     return self; 
    } 

    - (void)viewDidLoad 
    { 
     [super viewDidLoad]; 
// button which I have used 

     UIButton *login=[[UIButton alloc]initWithFrame:CGRectMake(100,100, 200,80)]; 
     [login setBackgroundColor:[UIColor blueColor]]; 

     [login setTitle:@"login With facebook" forState:UIControlStateNormal]; 
      [login setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 
     [login addTarget:self action:@selector(loginWithFacebook) forControlEvents:UIControlEventTouchUpInside]; 
     [self.view addSubview:login]; 



    } 

// method which excute on my button click 

    -(IBAction)loginWithFacebook{ 

     UserAppAppDelegate *appDelegate = [[UIApplication sharedApplication]delegate]; 
     NSArray *permissions = [[NSArray alloc] initWithObjects: 
           @"email", nil]; 
     if(!appDelegate.session.isOpen) 
     { 

      // create a fresh session object 
      appDelegate.session = [[FBSession alloc] init]; 
      [FBSession setActiveSession: appDelegate.session]; 

      [FBSession openActiveSessionWithReadPermissions:permissions 
               allowLoginUI:YES 
              completionHandler:^(FBSession *session, FBSessionState state, NSError *error) { 

               [self sessionStateChanged:session state:state error:error]; 
              }]; 

     } 
     else{ 
      NSLog(@"hi"); 
     } 


    } 

    - (void)sessionStateChanged:(FBSession *)session state:(FBSessionState) state error:(NSError *)error 
    { 
     // If the session was opened successfully 
     if (!error && state == FBSessionStateOpen){ 
      NSLog(@"Session opened"); 

      [self userData]; // method created to fetch user’s data. 
      // Show the user the logged-in UI 
      // do all the things as you have the info you requested from facebook 
      return; 
     } 
     if (state == FBSessionStateClosed || state == FBSessionStateClosedLoginFailed){ 
      // If the session is closed 
      NSLog(@"Session closed"); 
      // Show the user the logged-out UI 
      [FBSession.activeSession closeAndClearTokenInformation]; 

     } 

     // Handle errors 
     if (error){ 
      NSLog(@"Error"); 
      NSString *alertText; 
      NSString *alertTitle; 
      // If the error requires people using an app to make an action outside of the app in order to recover 
      if ([FBErrorUtility shouldNotifyUserForError:error] == YES){ 
       alertTitle = @"Something went wrong"; 
       alertText = [FBErrorUtility userMessageForError:error]; 
       [self showMessage:alertText withTitle:alertTitle]; 
      } else { 

       // If the user cancelled login, do nothing 
       if ([FBErrorUtility errorCategoryForError:error] == FBErrorCategoryUserCancelled) { 
        NSLog(@"User cancelled login"); 

        // Handle session closures that happen outside of the app 
       } else if ([FBErrorUtility errorCategoryForError:error] == FBErrorCategoryAuthenticationReopenSession){ 
        alertTitle = @"Session Error"; 
        alertText = @"Your current session is no longer valid. Please log in again."; 
        [self showMessage:alertText withTitle:alertTitle]; 

        // Here we will handle all other errors with a generic error message. 
        // We recommend you check our Handling Errors guide for more information 
        // https://developers.facebook.com/docs/ios/errors/ 
       } else { 
        //Get more error information from the error 
        NSDictionary *errorInformation = [[[error.userInfo objectForKey:@"com.facebook.sdk:ParsedJSONResponseKey"] objectForKey:@"body"] objectForKey:@"error"]; 

        // Show the user an error message 
        alertTitle = @"Something went wrong"; 
        alertText = [NSString stringWithFormat:@"Please retry. \n\n If the problem persists contact us and mention this error code: %@", [errorInformation objectForKey:@"message"]]; 
        [self showMessage:alertText withTitle:alertTitle]; 
       } 
      } 
      // Clear this token 
      [FBSession.activeSession closeAndClearTokenInformation]; 


     } 
    } 

    -(void)showMessage:(NSString*)alertMessage withTitle:(NSString*)alertTitle 
    { 
     [[[UIAlertView alloc] initWithTitle:alertTitle 
            message:alertMessage 
            delegate:nil 
          cancelButtonTitle:@"OK" 
          otherButtonTitles:nil] show]; 
    } 

    -(void)userData 
    { 

     // Start the facebook request 
     [FBRequestConnection startWithGraphPath:@"me" parameters:[NSDictionary dictionaryWithObject:@"id,email" forKey:@"fields"] HTTPMethod:@"GET" completionHandler:^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *result, NSError *error) 
     { 
      //if(!error){ 

    //    NSLog(@"result %@",result); 
       NSString *fbid =result[@"email"]; 
        NSLog(@"result %@",fbid); 
      //} 
     }]; 
    } 
+0

изображения в facebook ресурс расслоения – Retro

+1

Используйте 'FBLoginView' показать facebook логин или кнопку выхода из системы. –

+1

вы также можете загрузить изображение кнопки facebook и создать кнопку изображения вместо простой кнопки – morroko

ответ

0

Посмотрите на FBLoginView в Facebook SDK. Official link/tutorial. В более поздней части учебника также рассматривается реализация пользовательских представлений и вход в систему с вызовами API. Но обратите внимание, что в последнем случае вам придется самостоятельно создавать свою кнопку.

1

вы можете использовать FBLoginView иметь функциональность как ваше требование, вы можете использовать как эти кнопку

FBLoginView *loginView = [[FBLoginView alloc] init]; 
loginView.frame = YOURFRAME; 
[self.view addSubview:loginView]; 

 Смежные вопросы

  • Нет связанных вопросов^_^