我想测试Facebook用户的访问令牌已过期的代码路径,我需要更新令牌。我注意到访问令牌在创建后2个月到期。我不想等待2个月来测试该代码路径,所以我想要一种方法来模拟这个过期。如果我从未测试过以下谜团的情况,我害怕我的代码会崩溃:
[FBSession openActiveSessionWithReadPermissions:permArray allowLoginUI:NO completionHandler:someFunction]
以静默重新连接过去已连接的Facebook用户。请注意allowLoginUI是如何NO。允许用户重新登录和续订令牌是否必须为YES,或者令牌是否可以以静默方式续订?FBSessionStateOpen
和FBSessionStateOpenTokenExtended
。当令牌扩展时,状态机是否保持在令牌扩展状态,还是会进入扩展状态然后立即进入打开状态?我需要知道状态转换,所以我不会运行两次处理程序。[FBSession activeSession].accessToken
是否为零或是否仍为旧的过期令牌?[FBSession activeSession].expirationDate
:它是零,旧的到期日期,还是自动成为新的到期日期?答案 0 :(得分:5)
要使令牌过期,最简单的方法是登录计算机上的FB,转到App Center,单击“我的应用程序”,然后单击应用旁边的小X来删除您的应用。这将导致令牌变为“过期”。一旦发生这种情况,您无法在没有用户交互的情况下自动续订令牌。您必须重新打开身份验证UI,用户必须单击“允许”
关于你的问题:
allowLoginUI必须为YES。如果令牌过期,则用户必须 在获得新令牌并进行设置之前,先与UI进行交互 否则会让它无声地失败。
我相信TokenExtended状态只会在扩展当前活动的令牌时发生。如果用户在2个月期限结束之前使用您的应用,则FB SDK会自动为您定期延长令牌。这与更新过期的令牌不同。虽然不是100%肯定,因为我没有测试过这种状态。