gpt4 book ai didi

ios - 在 iOS 应用程序中退出 Facebook

转载 作者:行者123 更新时间:2023-11-29 13:08:50 24 4
gpt4 key购买 nike

我正在创建一个简单的 iOS 应用程序,它可以登录到 facebook,获取自己和 friend 的详细信息,从 facebook 注销。

现在从 Facebook 登录并获取自己和 friend 的详细信息工作正常,但我无法从 Facebook 完全注销。每当我注销然后重新登录时,我都会看到授权屏幕而不是 Facebook(Web)的身份验证登录屏幕。

下面是我的代码——你能不能看看我从登录到获取自己和 friend 的详细信息以及从 facebook 注销的步骤中是否有问题

1) 使用以下方法登录 Facebook

- (void)openSession
{
if(FBSession.activeSession.isOpen)
{
[FBSession openActiveSessionWithReadPermissions:nil
allowLoginUI:NO
completionHandler:
^(FBSession *session,
FBSessionState state, NSError *error)
{
[self sessionStateChanged:session state:state error:error];
}];
}
else
{
[FBSession openActiveSessionWithReadPermissions:nil
allowLoginUI:YES
completionHandler:
^(FBSession *session,
FBSessionState state, NSError *error)
{
[self sessionStateChanged:session state:state error:error];
}];
}
}

- (void)sessionStateChanged:(FBSession *)session
state:(FBSessionState) state
error:(NSError *)error
{
switch (state) {
case FBSessionStateOpen:
{
// Connection is Open
lblStatus.text = @"FBSessionStateOpen";
}
break;
case FBSessionStateClosed:
case FBSessionStateClosedLoginFailed:
{
[FBSession.activeSession closeAndClearTokenInformation];

// Connection is Closed / Login Failed
lblStatus.text = @"FBSessionStateClosed";
}
break;
default:
break;
}
}

2) 使用下面的方法获取自己的详细信息和 friend 的详细信息

if (FBSession.activeSession.isOpen)
{
[[FBRequest requestForMe] startWithCompletionHandler:
^(FBRequestConnection *connection,
NSDictionary<FBGraphUser> *user,
NSError *error) {
if (!error) {
self.lblSelfDetails.text = user.name;
self.profilePicture.profileID = user.id;
}
}];
}

FBRequest *friendRequest = [FBRequest requestForGraphPath:@"me/friends?fields=name,birthday"];

[friendRequest startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error)
{
NSArray *data = [result objectForKey:@"data"];

for (FBGraphObject<FBGraphUser> *friend in data)
{
NSLog(@"%@:%@", [friend name],[friend birthday]);
}
}];

3) 使用以下方法注销

- (IBAction)logout:(id)sender
{
[FBSession.activeSession closeAndClearTokenInformation];
}

最佳答案

请使用此方法成功登出facebook

- (void)logout:(id<FBSessionDelegate>)delegate {

_sessionDelegate = delegate;

NSMutableDictionary * params = [[NSMutableDictionary alloc] init];
[self requestWithMethodName:@"auth.expireSession"
andParams:params andHttpMethod:@"GET"
andDelegate:nil];

[params release];
[_accessToken release];
_accessToken = nil;
[_expirationDate release];
_expirationDate = nil;

NSHTTPCookieStorage* cookies = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray* facebookCookies = [cookies cookiesForURL:
[NSURL URLWithString:@"https://m.facebook.com"]];

for (NSHTTPCookie* cookie in facebookCookies) {
[cookies deleteCookie:cookie];
}

if ([self.sessionDelegate respondsToSelector:@selector(fbDidLogout)]) {
[_sessionDelegate fbDidLogout];
}
}

希望对你有帮助!!!

关于ios - 在 iOS 应用程序中退出 Facebook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17880993/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com