我在我的应用程序中使用 Parse 和 Facebook 进行帐户管理。每当用户通过 facebook 按钮登录时,我的代码都能完美运行,因为 facebook sdk 会自动生成一个新的访问令牌。但是,如果我使用自动登录代码来检查用户是否已批准该应用程序,我没有访问令牌并且无法访问该用户的 Facebook 数据。我不知道如何为已经同意使用我的应用程序的用户请求访问令牌。
加载数据中:
- (void)_loadData :(BOOL)updateData
{
NSLog(@"entered _loadData");
NSMutableDictionary* userInfoParams = [NSMutableDictionary dictionary];
[userInfoParams setValue:@"id,name,email,gender" forKey:@"fields"];
if([FBSDKAccessToken currentAccessToken])
{
NSLog(@"Expiration date of token: %@", [[FBSDKAccessToken currentAccessToken] expirationDate]);
}
else NSLog(@"No access token");
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:userInfoParams];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection* connection, id result, NSError* error)
{
if(!error)
{
...
}
}
}
自动登录系统:
(void)viewDidAppear:(BOOL)animated
{
if ([PFUser currentUser] || [PFFacebookUtils isLinkedWithUser:[PFUser currentUser]])
{
NSLog(@"Yes");
[self _loadData:YES];
[self transitionToLoginSegue:(id)self];
}
else NSLog(@"No");
}
此外,当用户单击登录按钮时我收到的访问令牌持续 4 周,所以如果有办法手动分配访问令牌,那么我可以这样做,但是[FBSDKAccessToken currentAccessToken]不可分配,所以我也不能这样做.