IOS Facebook登录首次返回取消状态

IOS Facebook登录首次返回取消状态,ios,objective-c,Ios,Objective C,我使用objective c代码集成了Facebook登录功能。它仅在第一次返回“始终取消”状态。我搜索了许多文章。但是,这个解决方案对我不起作用。有人能帮我做同样的事情吗?首先在viewcontroller中导入以下内容: first import below in your viewcontroller: #import <FBSDKLoginKit/FBSDKLoginKit.h> #import <FBSDKCoreKit/FBSDKCoreKit.h

我使用objective c代码集成了Facebook登录功能。它仅在第一次返回“始终取消”状态。我搜索了许多文章。但是,这个解决方案对我不起作用。有人能帮我做同样的事情吗?

首先在viewcontroller中导入以下内容:
first import below in your viewcontroller:

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

In Viewcontroller LoginWithFacebookButton_Clicked,

- (IBAction)LoginWithFacebookButton_Clicked:(id)sender
{
    NSHTTPCookieStorage* cookies = [NSHTTPCookieStorage sharedHTTPCookieStorage];
    NSArray* facebookCookies = [cookies cookiesForURL:[NSURL URLWithString:@"http://login.facebook.com"]];
    for (NSHTTPCookie* cookie in facebookCookies)
    {
        [cookies deleteCookie:cookie];
    }

    [FBSDKAccessToken setCurrentAccessToken:nil];
    [FBSDKProfile setCurrentProfile:nil];

    FBSDKLoginManager *manager=[[FBSDKLoginManager alloc]init];
    [manager logOut];

    if ([AFNetworkReachabilityManager sharedManager].networkReachabilityStatus==AFNetworkReachabilityStatusNotReachable)
    {
        [STMethod showInternetToast:self.view];
        return;
    }

    FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];

    login.loginBehavior = FBSDKLoginBehaviorWeb;

    [login logInWithReadPermissions: @[@"public_profile",@"email"]fromViewController:self handler:^(FBSDKLoginManagerLoginResult result,NSError error)
    {
        if (error)
         {
             NSLog(@"Process error");
         }
         else if (result.isCancelled)
         {
             NSLog(@"Cancelled");
         }
         else
         {
             NSLog(@"Logged in");

             FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
                                           initWithGraphPath:@"/me"
                                           parameters:@{@"fields": @"id,name,email,first_name,last_name,gender,birthday,picture.type(large)",}
                                           HTTPMethod:@"GET"];

             [request startWithCompletionHandler:^(FBSDKGraphRequestConnection connection, id Userresult, NSError error)
              {
                  //Insert your code here
              }    


#pragma  mark - Checking for facebook user

 AFHTTPSessionManager*manager=[[AFHTTPSessionManager alloc]init];

   manager.responseSerializer.acceptableContentTypes = [manager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"];

                  NSDictionary *parameters=@{@"fb_id":[Userresult valueForKey:@"id"],@"device_token":[NSString stringWithFormat:@"%@",[USERDEFAULT valueForKey:kToken]],@"device_type":@"ios"};

                  [manager POST:WS_FacebookLogin parameters:parameters success:^(NSURLSessionDataTask * Nonnull task, id  Nonnull responseObject)
                   {


                   }
                        failure:^(NSURLSessionDataTask  _Nonnull task, NSError  _Nonnull error)
                   {

                   }];

              }];
         }
     }];
}
#进口 #进口 #进口 #进口 在单击了FaceBookButton的Viewcontroller登录中, -(iAction)已单击FaceBookButton的登录:(id)发件人 { NSHTTPookieStorage*cookies=[NSHTTPookieStorage SharedHTTPookieStorage]; NSArray*facebookCookies=[cookies cookies ForURL:[NSURL URLWithString:@]http://login.facebook.com"]]; 用于(NSHTTPCookie*facebookCookies中的cookie) { [曲奇删除曲奇:曲奇]; } [FBSDKAccessToken setCurrentAccessToken:nil]; [FBSDKProfile setCurrentProfile:nil]; FBSDKLoginManager*管理器=[[FBSDKLoginManager alloc]init]; [经理注销]; if([AfNetworkReachibilityManager sharedManager].NetworkReachibilityStatus==AfNetworkReachibilityStatusNotReachable) { [stmethodshowtinternetoast:self.view]; 返回; } FBSDKLoginManager*login=[[FBSDKLoginManager alloc]init]; login.loginBehavior=FBSDKLoginBehaviorWeb; [login LoginWith ReadPermissions:@[@“public_profile”,@“email”]fromViewController:self handler:^(FBSDKloginManager结果,N错误) { 如果(错误) { NSLog(@“过程错误”); } 否则如果(结果被取消) { NSLog(@“已取消”); } 其他的 { NSLog(@“已登录”); FBSDKGraphRequest*请求=[[FBSDKGraphRequest alloc] initWithGraphPath:@“/me” 参数:@{@“字段”:@“id、姓名、电子邮件、名、姓、性别、生日、图片。键入(大)”,} HTTPMethod:@“获取”]; [请求startWithCompletionHandler:^(FBSDKGraphRequestConnection连接,id Userresult,N错误) { //在这里插入您的代码 } #pragma标记-检查facebook用户 AFHTTPSessionManager*manager=[[AFHTTPSessionManager alloc]init]; manager.responseSerializer.acceptableContentTypes=[manager.responseSerializer.acceptableContentTypes setByAddingObject:@“text/html”]; NSDictionary*参数=@{@“fb_id”:[Userresult valueForKey:@“id”],@“device_token”:[NSString stringWithFormat:@“%@”,[USERDEFAULT valueForKey:kToken],@“device_type:@“ios”}; [管理员帖子:WS_facebook登录参数:参数成功:^(NSURLSessionDataTask*非空任务,id非空响应对象) { } 失败:^(NSURLSessionDataTask _非空任务,NSError _非空错误) { }]; }]; } }]; }
Hi Dipesh。谢谢你的回答。是否需要使用FBSDKLoginBehaviorWeb?它总是显示Facebook登录弹出窗口,因为我们正在调用注销方法。是否需要调用注销方法?我尝试使用FBSDKLoginBehaviorNative进行login.loginBehavior。它不起作用了。你有什么解决办法吗?