IOS Facebook登录首次返回取消状态
我使用objective c代码集成了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
首先在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。它不起作用了。你有什么解决办法吗?