繁体   English   中英

iPhone / iOS Facebook SDK - 您可以在应用程序中登录,并保留登录凭据吗?

[英]iPhone / iOS Facebook SDK - can you log in within the app, and keep the login credentials?

是否可以使用Facebook iOS SDK在应用程序内进行身份验证(而不是访问Safari),并为下次启动应用程序保留这些身份验证凭据?

当我尝试在模拟器中使用演示应用程序时,它总是去safari进行身份验证,这看起来有点糟糕。 然后,当我进行身份验证时...如果我完全杀死该应用程序,它将要求再次进行身份验证(然后告诉我我已经登录)

有没有办法,只为用户提供一个电子邮件字段和密码字段,然后在应用程序中保留该信息?

看看这个问题和答案: Iphone facebook连接示例呼叫safari。 我不想使用safari 此外,您需要将身份验证内容存储在NSUserDefaults并检查它们以防止重新登录。

编辑一些示例代码:

要保存登录内容:

[[NSUserDefaults standardUserDefaults] setObject:_facebook.accessToken forKey:@"AccessToken"];
[[NSUserDefaults standardUserDefaults] setObject:_facebook.expirationDate forKey:@"ExpirationDate"];
[[NSUserDefaults standardUserDefaults] synchronize];

要检查登录内容:

_facebook = [[[Facebook alloc] initWithAppId:@"[app_id]"] retain];
_facebook.accessToken    = [[NSUserDefaults standardUserDefaults] stringForKey:@"AccessToken"];
_facebook.expirationDate = (NSDate *) [[NSUserDefaults standardUserDefaults] objectForKey:@"ExpirationDate"];
if (![_facebook isSessionValid]) {
    [_facebook authorize:_permissions delegate:self];
}
else {
    [_facebook requestWithGraphPath:@"me" andDelegate:self];
}

如果这是你真正想要的,你可以破解它来阻止它,记住从旧的Facebook连接api迁移到图表的大多数其他应用程序将以新的方式运行

在facebook.m中找到以下方法

- (void)authorizeWithFBAppAuth:(BOOL)tryFBAppAuth
                    safariAuth:(BOOL)trySafariAuth

找到didOpenOtherApp逻辑的底部并注释掉它上面的所有内容,以便它始终打开内联并调整!didOpenOtherApp括号中包含的这段代码

// If single sign-on failed, open an inline login dialog. This will require the user to
  // enter his or her credentials.
  if (!didOpenOtherApp) {
    [_loginDialog release];
    _loginDialog = [[FBLoginDialog alloc] initWithURL:loginDialogURL
                                          loginParams:params
                                             delegate:self];
    [_loginDialog show];
  }

但是,这样做会让用户更有可能输入他们的凭据,这肯定比采用快速应用切换方法更糟糕吗?

首次验证时,请确保您要求“offline_access”权限。 这将使OAuth返回给您的令牌不会在会话结束时失效,而是保持有效,直到它们出现并使用API​​将您的应用程序记录到Facebook之外。

然后,显然,你需要保存令牌(我觉得NSUserDefaults是一个很好的地方)并在以后的FB交互中重复使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM