供参考:我正在使用最新的 Facebook IOS SDK v4 和最新的 Parse v1.7.4 和 ParseFacebookUtilsV4 SDK。
所以我使用 PFFacebookUtils loginInBackgroundWithReadPermissions:block: 方法让用户使用 Facebook 凭据登录并使用这些凭据创建一个 PFUser。然后继续使用 FBSDKGraphRequest 发出 facebook 图形请求,根据我的阅读,假设已设置有效令牌(没有向其传递令牌参数)。
但是 facebook 图形请求失败,在跟踪问题时,我注意到 loginInBackgroudnWithReadPermissions 方法从未设置“访问令牌”。这个方法只做的是在 Parse 中创建一个 PFUser 和一个 Session 实例,并在那里存储会话令牌字符串,但它没有设置 currentAccessToken 。当我在块内进行 [[FBSDKAccessToken currentAccessToken] tokenString] 调用时,我得到(null)。但是,如果我从 PFSession 类中读取“令牌字符串”,我会在 Parse 的 Session 类实例中获得“令牌字符串”存储。
请看下面的代码:
- (IBAction)fbLoginAction:(id)sender {
// Set permissions required from the facebook user account
NSArray *permissionsArray = @[ @"email", @"user_friends"];
// Login PFUser using Facebook
[PFFacebookUtils logInInBackgroundWithReadPermissions:permissionsArray block:^(PFUser *user, NSError *error) {
if (!user) {
NSLog(@"Uh oh. The user cancelled the Facebook login.");
} else if (user.isNew) {
NSLog(@"User signed up and logged in through Facebook!");
// Check if the current token has been set
NSLog(@"self.myCurrentToken string = %@", [[FBSDKAccessToken currentAccessToken] tokenString]); // returns (null)
// Get the token string from the PFSession
[PFSession getCurrentSessionInBackgroundWithBlock:^(PFSession *session, NSError *error) {
NSString *tokenString = session.sessionToken;
NSLog(@"Session token = %@", tokenString);
}];
}
这是调试控制台输出

所以我不确定发生了什么。如果 PFSession 令牌设置为不应该 FBSDKAccessToken currentAccessToken 不返回相同的 PFsession 令牌?
如果我要手动设置 accessToken,如何将存储在 Parse 中的令牌字符串转换为 FBSDKAccessToken 实例?似乎没有办法做到这一点?
谢谢