gpt4 book ai didi

ios - Facebook iOS SDK 是否要求用户在每次使用该应用程序时都进行身份验证?

转载 作者:IT王子 更新时间:2023-10-29 08:08:29 24 4
gpt4 key购买 nike

如 facebook-ios-sdk 的自述文件中所述,我的应用程序在执行任何 API 调用之前调用 Facebook#authorize:delegate:。

此方法要求用户进行身份验证(在 Facebook 应用程序或 Safari 中),然后将控制权交还给我的 iPhone 应用程序。问题是每次我调用该方法时它都要求用户进行身份验证。如果他们已经授予对我的应用程序的权限,他们会收到一条消息,说明该应用程序已获得授权,他们必须按确定才能返回到我的应用程序。看起来不是很专业。

所以我有两个问题:

  1. 用户是否总是需要重新授权才能调用 Facebook 电话?我一直认为它会将访问 token 保存在某个地方,也许在用户默认设置中,这样您就不需要重新授权。

  2. 如果用户不必每次都重新授权,有没有办法检查我的应用程序是否已获得权限,这样用户就不必看到该消息并按“确定”?

最佳答案

很遗憾,Facebook SDK 不会自动为我们处理它。除了自己将其构建到 SDK 中,最简单的方法是:

每次分配_facebook:

_facebook = [[Facebook alloc] initWithAppId:@"SuperDuperAppID"];
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSString *accessToken = [prefs stringForKey:@"facebook-accessToken"];
NSString *expirationDate = [prefs stringForKey:@"facebook-expirationDate"];
_facebook.accessToken = accessToken;
_facebook.expirationDate = expirationDate;

如果您从未在 NSUserDefaults 中保存任何内容,那么将设​​置 nil 值。什么都没发生。否则,将设置真值,并且 [_facebook isSessionValid]; 应该返回 TRUE,表示良好的值。继续进行 Facebook SDK 调用,就像它们已登录一样(它们确实如此)。如果为 false,则调用

[facebook authorize:permissions delegate:self]; 

像往常一样。

然后确保支持以下 Facebook 委托(delegate)方法:

- (void)fbDidLogin {
NSString *accessToken = _facebook.accessToken;
NSString *expirationDate = _facebook.expirationDate;
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setObject:accessToken forKey:@"facebook-accessToken"];
[prefs expirationDate forKey:@"facebook-expirationDate"];
[prefs synchronize];
}

我在我的应用程序中使用了这段代码,它运行良好。我是凭内存做的,所以如果它在复制和粘贴上不起作用,我深表歉意。可能某处输入错误,加上内存管理不当。不要忘记,除非您获得离线许可,否则访问 token 会过期。在任何情况下,上面的代码都会处理所有事情。

关于ios - Facebook iOS SDK 是否要求用户在每次使用该应用程序时都进行身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5571648/

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