Iphone 存储facebook令牌以进行脱机访问
我正在寻找一种保存访问令牌的方法,以允许用户在facebook上发布,而无需每次调用graph API都登录: 我需要一个离线访问令牌,我将其存储在NSUserDefaults中,但当我再次尝试使用它时,会出现FacebookErrDomain错误10000 以下是我的工作: 在fbDidLogin中,我获取访问令牌并将其保存在用户默认值中Iphone 存储facebook令牌以进行脱机访问,iphone,objective-c,facebook,Iphone,Objective C,Facebook,我正在寻找一种保存访问令牌的方法,以允许用户在facebook上发布,而无需每次调用graph API都登录: 我需要一个离线访问令牌,我将其存储在NSUserDefaults中,但当我再次尝试使用它时,会出现FacebookErrDomain错误10000 以下是我的工作: 在fbDidLogin中,我获取访问令牌并将其保存在用户默认值中 - (void)fbDidLogin { NSString *token = self.facebook.accessToken; [[NS
- (void)fbDidLogin {
NSString *token = self.facebook.accessToken;
[[NSUserDefaults standardUserDefaults] setObject:token forKey:@"facebookToken"];
}
之后,当我再次运行应用程序时,我只是从用户默认值中获取令牌,并将其分配给facebook对象:
NSString *token = [[NSUserDefaults standardUserDefaults] objectForKey:@"facebookToken"];
[_facebook setAccessToken:token];
但是它不起作用
有人知道我做错了什么吗
谢谢,
文森特
编辑:
如果我在[[NSUserDefaults standardUserDefaults]objectForKey:@“facebookToken”]之后执行NSlog代码>我可以看到令牌已保存。请确保调用:
[[NSUserDefaults standardUserDefaults] synchronize];
这将“保存”您的首选项到磁盘/闪存
在保存令牌之前,还要对其执行NSLog,以确保它不是零。确保调用:
[[NSUserDefaults standardUserDefaults] synchronize];
这将“保存”您的首选项到磁盘/闪存
在保存令牌之前,还要对其进行NSLog,以确保它不是零。好的,似乎是facebook iOS SDK有问题
使用用户默认设置中存储的令牌,我可以使用curl在我的墙上执行帖子:
curl -F 'access_token=br69pK_lh0Xbj....plDRUdG97a55KIHzlaiw' \
-F 'message=TEST API.' \
https://graph.facebook.com/ME/feed
所以我只是执行一个HTTPS POST,所以使用ASIHTTPRequest这个代码就像一个符咒:
NSURL* faceboobUrl = [NSURL URLWithString:@"https://graph.facebook.com/ME/feed"];
self.request = [ASIFormDataRequest requestWithURL:faceboobUrl];
[request setRequestMethod:@"POST"];
[request setPostValue:token forKey:@"access_token"];
[request setPostValue:msg forKey:@"message"];
[request setDelegate:self];
[request setTimeOutSeconds:TIMEOUT];
[request startAsynchronous];
不,谢谢
Vincent好吧,看来是facebook iOS SDK出了问题
使用用户默认设置中存储的令牌,我可以使用curl在我的墙上执行帖子:
curl -F 'access_token=br69pK_lh0Xbj....plDRUdG97a55KIHzlaiw' \
-F 'message=TEST API.' \
https://graph.facebook.com/ME/feed
所以我只是执行一个HTTPS POST,所以使用ASIHTTPRequest这个代码就像一个符咒:
NSURL* faceboobUrl = [NSURL URLWithString:@"https://graph.facebook.com/ME/feed"];
self.request = [ASIFormDataRequest requestWithURL:faceboobUrl];
[request setRequestMethod:@"POST"];
[request setPostValue:token forKey:@"access_token"];
[request setPostValue:msg forKey:@"message"];
[request setDelegate:self];
[request setTimeOutSeconds:TIMEOUT];
[request startAsynchronous];
不,谢谢
Vincent我也遇到了同样的问题,我发现问题在于您没有存储过期日期
如果您这样做,它将允许您重新登录
示例代码:
[[NSUserDefaults standardUserDefaults] setObject:_facebook.accessToken forKey:@"fb_access_token"];
[[NSUserDefaults standardUserDefaults] setObject:_facebook.expirationDate forKey:@"fb_exp_date"];
检索也是一样的,只需设置facebook.expirationDate
我也遇到了同样的问题,我发现问题是您没有存储过期日期
如果您这样做,它将允许您重新登录
示例代码:
[[NSUserDefaults standardUserDefaults] setObject:_facebook.accessToken forKey:@"fb_access_token"];
[[NSUserDefaults standardUserDefaults] setObject:_facebook.expirationDate forKey:@"fb_exp_date"];
检索也一样,只需设置
\u facebook.expirationDate
嗨,我确信令牌已保存,因为当我从用户默认设置中获取它时,我可以看到它。我注意到的另一件事是,每次我登录并询问权限时,令牌都是不同的,不知道它是否有用。我用这些信息更新了我的问题。我确信令牌已被保存,因为当我从用户默认设置中获取它时,我可以看到它。我注意到的另一件事是,每次我登录并询问权限时,令牌都是不同的,不知道它是否有用。我用这些信息更新了我的问题