Iphone facebook iOS sdk自定义委托和SSO授权
我一直在玩新的facebook iOS sdk。我已经让我的项目到了有人可以成功登录的地步。不过,我有两个问题: 1) 要点击图形api,需要发出以下调用:[facebookInstance requestWIthGraphPath:@“me”和Delegate:self]。是否有可能指定一名非self的代表?当前,所有响应都转到(void)请求:(FBRequest*)请求didLOad:(id)结果。但是,由于我的应用程序可能会在不同的时间向facebook api发出请求,并且每个发出的请求都需要发生不同的事情,我如何指定响应应该在我的应用程序中命中哪个回调函数?这可能吗 2) 用户登录后,如何检查其授权/登录状态,以便在用户已登录时禁用登录按钮?考虑用户在第一次打开应用程序并登录的例子。然后关闭应用程序,几分钟后打开。我不希望第二次向用户显示登录按钮,而是开始拉取信息以显示他们的姓名。1)只要作为委托提供的对象符合FBRequestDelegate协议,指定除self之外的委托应该不会有任何错误。或者,您可以询问在委托方法中获得的FBRequest对象,以确定刚刚加载的请求以及相应的响应 2) 为了让用户保持登录状态,您需要在用户登录时保存Facebook对象的accessToken(NSString)和expirationDate(NSDate)属性。然后,当用户登录时,尝试恢复这些值。 一些代码片段可能会有所帮助:Iphone facebook iOS sdk自定义委托和SSO授权,iphone,facebook,sdk,authorization,single-sign-on,Iphone,Facebook,Sdk,Authorization,Single Sign On,我一直在玩新的facebook iOS sdk。我已经让我的项目到了有人可以成功登录的地步。不过,我有两个问题: 1) 要点击图形api,需要发出以下调用:[facebookInstance requestWIthGraphPath:@“me”和Delegate:self]。是否有可能指定一名非self的代表?当前,所有响应都转到(void)请求:(FBRequest*)请求didLOad:(id)结果。但是,由于我的应用程序可能会在不同的时间向facebook api发出请求,并且每个发出的请
- (void)fbDidLogin
{
NSString *tokenString = [[self facebook] accessToken];
NSDate * expirationDate = [[self facebook] expirationDate];
[[NSUserDefaults standardUserDefaults] setObject: tokenString forKey:@"FacebookToken"];
[[NSUserDefaults standardUserDefaults] setObject: expirationDate forKey:@"FacebookExpirationDate"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
并且,当您需要用户登录时:
NSString *tokenString = [[NSUserDefaults standardUserDefaults] objectForKey:@"FacebookToken"];
NSDate *expDate = [[NSUserDefaults standardUserDefaults] objectForKey:@"FacebookExpirationDate"];
if (tokenString != nil && expDate != nil)
{
[facebook setAccessToken:tokenString];
[facebook setExpirationDate:expDate];
}
if ([facebook isSessionValid])
{
//Your session is valid, do whatever you want.
}
else
{
//Your session is invalid
//(either the session is past the expiration date or there is no saved data for the login)
//you need to ask the user to log in
}
非常感谢您与我们分享您的代码!你能稍微润色一下吗?有几个错误(试着编译一下,你会很容易找到它们)?这将帮助想要尝试您的代码的人。我刚刚编辑了一行,以确定是否(tokenString!=nil&&expDate!=nil)还缺少另一个错误?您忘记了:forKey@“FacebookExpirationDate”中的冒号