代码之家  ›  专栏  ›  技术社区  ›  Casey Flynn

已通过身份验证的iPhone应用程序上的Facebook登录屏幕闪烁

  •  2
  • Casey Flynn  · 技术社区  · 15 年前

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

    if (facebook == nil)
    {
        facebook = [[Facebook alloc] init];
    }
    
    if (!facebook.accessToken)
    {
        [facebook authorize:@"###############" permissions:[NSArray arrayWithObject:@"publish_stream"] delegate:self];
    }else
    {
        [self fbDidLogin];
    }
    
    2 回复  |  直到 13 年前
        1
  •  1
  •   Moshe    15 年前

    凯西,这也许能帮你:

    我发现这个闪烁的登录屏幕的主要问题与iPhone中Facebook商店的cookies有关。

    我所做的是:

    一。 将facebook访问令牌和到期日期存储在其他地方(NSUserDefaults可能是一个好地方)。

    这样,您就可以检查用户是否已经通过身份验证。如果用户还没有通过身份验证,那么可以显示登录屏幕。

    2。

    您可以尝试在每次希望用户登录时删除facebook cookies。那是我的工作。

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

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

        2
  •  0
  •   A.S.    15 年前

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