0

我正在使用 Facebook iOS SDK 3.1.1 并且已经成功集成了很多 Facebook 功能。坚持3.1.1,我登录使用

        [FBSession openActiveSessionWithPermissions:permission
                                       allowLoginUI:bAllowLoginUI
                                  completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {
                                  [self sessionStateChanged:session state:state error:error];
        }];

然后我需要发送“apprequests”,并且在 SDK 3.1 中没有新的方法可以实现,所以我必须使用 Facebook 对象和 FBDialog 回退到已弃用的 API。

但是,调用已弃用的对话框函数:

[m_pFacebook dialog:@"apprequests"
           andParams:params
         andDelegate:delegate];

导致弹出 FBDialog 并提示用户通过对话框再次登录。我需要直接进入 apprequests 对话框,而不需要用户再次输入他们的凭据,我确信有一种方法可以做到这一点,因为我已经看到它在 Diamond Dash 和其他游戏中实现。

我尝试使用 FBSession.activeSession.accessToken 设置 m_pFacebook.accessToken,并且我还确保 m_pFacebook.session 填充了 FBSession 的登录会话

以前有人遇到过这个问题吗?

4

1 回答 1

0

经过一番调试,发现 Facebook *m_pFacebook 对象的 expireDate 没有更新,因此 _lastAccessTokenUpdate 仍在 [NSDate distinctPast] 中。解决方法是调用

[m_pFacebook fbDialogLogin:session.accessToken expirationDate:session.expirationDate];

当 sessionStateChanged 为 FBSessionStateOpen

- (void) sessionStateChanged:(FBSession*)session state:(FBSessionState)state error:(NSError*)error {
    switch ( state ) {
        case FBSessionStateOpen:
            [m_pFacebook fbDialogLogin:session.accessToken expirationDate:session.expirationDate];
        break;
    }
}
于 2013-01-14T06:16:07.083 回答