Facebook登录屏幕在已经过身份验证后在iPhone应用程序上闪烁

时间:2010-11-10 20:09:32

标签: iphone ios facebook

我正在将facebook与我的应用程序集成,我想让用户可以选择在我的应用程序中将故事发布到他们的FB墙。据我所知,这要求用户1.登录/授权并从单独的屏幕中选择“发布”以发布故事。

我的目标是在用户按下我的应用中的按钮时发生这两个事件。我注意到的唯一一个小问题是,如果用户已经登录并授权应用程序,登录屏幕会在“发布故事”屏幕前短暂闪烁。是否有任何类型的属性我可以检查用户是否已经授权应用程序以防止登录屏幕闪烁?这是我现在正在使用的代码:

if (facebook == nil)
{
    facebook = [[Facebook alloc] init];
}

if (!facebook.accessToken)
{
    [facebook authorize:@"###############" permissions:[NSArray arrayWithObject:@"publish_stream"] delegate:self];
}else
{
    [self fbDidLogin];
}

2 个答案:

答案 0 :(得分:1)

凯西,这可能会对你有所帮助:

我在闪存登录屏幕上发现的主要问题与Facebook存储在iPhone中的Cookie有关。

我做的是:

1. 将facebook access_token和expiration_date存储在其他位置(NSUserDefaults可能是一个好地方)。

这样,您可以检查用户是否已经过身份验证。如果用户未经过身份验证,则可以显示登录屏幕。

2。另一件重要的事情是,知道Facebook会在身份验证过程中保存一些Cookie。那么,会发生什么:用户验证然后关闭应用程序,然后他打开它然后点击登录; Facebook将使用其cookie,导致令人讨厌的屏幕出现和消失。

每次您希望用户登录时,您都可以尝试删除Facebook Cookie。那为我做了这件事。

这里有一个删除Cookie的代码段。

-(void) deleteFacebookCookies{
    NSHTTPCookieStorage* cookies = [NSHTTPCookieStorage sharedHTTPCookieStorage];
    NSArray* facebookCookies = [cookies cookiesForURL:
                                [NSURL URLWithString:@"http://login.facebook.com"]];

    for (NSHTTPCookie* cookie in facebookCookies) {
        [cookies deleteCookie:cookie];
    }
}
HTH,干杯!

答案 1 :(得分:0)

如果您使用FBConnect,您可以使用[[FBSession session] isConnected]和[[FBSession session]注销,这适用于旧SDK,当前版本的auth中有一些更改。