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

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

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

此方法需要用户进行身份验证(在Facebook应用程序或Safari中),然后将控制权重新放回iPhone应用程序。问题是它要求用户在每次调用该方法时进行身份验证。如果他们已经授权我的应用程序,他们会收到一条消息,指出该应用已经被授权,他们必须按OK才能返回到我的应用程序。看起来不是很专业

所以我有两个问题:

>用户是否必须重新授权才能进行Facebook通话?我一直认为它会将访问令牌保存在某个地方,也许在用户默认值中,以便您不需要重新授权。
>如果用户不需要每次重新授权,有没有办法检查我的应用程序是否已经有权限,所以用户不必看到该消息并按OK?

不幸的是,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调用,就像登录(他们是)一样。如果是虚假的话,再打电话

[facebook authorize:permissions delegate:self]; 

照常。

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

- (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];
}

我在我的应用程序中使用这个代码,它的工作原理很好。我从记忆中做到这一点,所以如果在复制和粘贴上不起作用,我很抱歉。在某个地方可能会有一个错误的类型,加上不正确的内存管理。不要忘记访问令牌到期,除非您获得离线许可。无论如何,上面的代码处理一切。

http://stackoverflow.com/questions/5571648/does-the-facebook-ios-sdk-require-the-user-to-authenticate-every-time-they-use-t

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:Facebook iOS SDK是否要求用户在每次使用该应用程序时进行身份验证?