2015-10-31 102 views
1

步骤,我在我的项目完成:为什么FBlogin按钮委托方法不能调用?

  1. Fb的APPID我创建:

  2. 我在info.plist加入这个关键。

  3. sdk全部导入到我的项目中。

  4. appdelegate.m文件

    -(BOOL)application:(UIApplication *)application 
          openURL:(NSURL *)url 
        sourceApplication:(NSString *)sourceApplication 
         annotation:(id)annotation { 
    
        NSString *stringURL = [ url absoluteString]; 
        if([stringURL containsString:@"fb"]) 
        { 
    
         return [[FBSDKApplicationDelegate sharedInstance] application:application 
                       openURL:url 
                    sourceApplication:sourceApplication 
                      annotation:annotation]; 
    
        } 
        else 
        { 
    
         return [GPPURLHandler handleURL:url 
             sourceApplication:sourceApplication 
              annotation:annotation]; 
    
        } 
    } 
    
  5. 我的按钮类fbsdkloginbutton,委托成功给予视图 - 控制

6. enter image description here

7.Two按钮委派方法还实施

-(BOOL)loginButtonWillLogin:(FBSDKLoginButton *)loginButton 
{ 
    return YES; 
} 
-(void)loginButton:(FBSDKLoginButton *)loginButton didCompleteWithResult:(FBSDKLoginManagerLoginResult *)result error:(NSError *)error 

{ 
    if(error) 
    { 
     NSLog(@"==%@",error); 
    } 
    else 
    { 

     NSUserDefaults *pref=[NSUserDefaults standardUserDefaults]; 
     [pref setObject:_txtcity.text forKey:@"CITY"]; 

     [self _loadData]; 

    } 
} 
-(void)loginButtonDidLogOut:(FBSDKLoginButton *)loginButton 
{ 
    NSLog(@"user logged out"); 
    [[FBSDKLoginManager new] logOut]; 
} 

- (void)_loadData { 
// FBSDKGraphRequest *request=[[FBSDKGraphRequest alloc]initWithGraphPath:@"me" parameters:@{ @"fields" : @"id,name,picture.width(100).height(100),email"} tokenString:nil version:nil HTTPMethod:@"GET"]; 
    // For more complex open graph stories, use `FBSDKShareAPI` 
    // with `FBSDKShareOpenGraphContent` 
    /* make the API call */ 
    FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] 
            initWithGraphPath:@"/me" 
            parameters:@{ @"fields" : @"id,name,picture.width(100).height(100),emailid"} 
            HTTPMethod:@"GET"]; 
//  @{ @"fields" : @"id,name,picture.width(100).height(100),email"} 
    //@{ @"fields" : @"id,name,picture.width(100).height(100)"}] 
    // @{@"fields":@"email,public_profile"} 
    [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, 
              id result, 
              NSError *error) { 
     if(result) 
     { 
      NSLog(@"%@",connection); 
      // Handle the result 
      NSLog(@"%@",result); 
      NSDictionary *userData = (NSDictionary *)result; 
      NSLog(@"====%@",request); 
      NSString *facebookID = userData[@"id"]; 
      name = userData[@"name"]; 
      //     NSString *location = userData[@"location"][@"name"]; 

      email = userData[@"email"]; 
      imgurl = userData[@"picture"][@"data"][@"url"]; 
      NSLog(@"this is email=%@facebookid==%@name==%@picture url%@",email,facebookID,name,imgurl); 
      NSData *Data=[NSData dataWithContentsOfURL:[NSURL URLWithString:imgurl]]; 
      UIImage *image=[UIImage imageWithData:Data]; 
      datas.imgProfilePhoto=image; 
      [email protected]"1"; 
      [self multiform]; 
     } 


    }]; 


} 
+0

请参阅此链接可能是你的帮助http://stackoverflow.com/a/30275960/4536708 –

+0

@DharmeshDhorajiya所以你告诉改变我的代码流? –

+0

@DharmeshDhorajiya它给我错误域= com.facebook.sdk.login代码= 301“操作无法完成。(com.facebook.sdk.login错误301.)” –

回答

1

确保按钮给出FBSDKLoginButton类中XIB。

+0

是否需要给那个fbsdkloginbutton而不是我在里面使用touchup方法.. –

+0

因为当你加载xib时,你必须告诉xcode你想要加载哪个类的元素 –

相关问题