一些背景:用户之前安装了应用程序,授权 FB,一切正常,然后他们更改了他们的 FB 密码(通过 facebook.com),删除了应用程序,现在重新安装并再次运行它重新安装。
我正在打电话[FBSession openActiveSessionWithReadPermissions:allowLoginUI:completionHandler]
,allowLoginUI: YES
读取权限是“email、user_about_me、user_birthday、user_interests、user_location”。
FBSessionState
我进入的completionHandler
是FBSessionStateClosedLoginFailed
。错误的 NSLog 是这样的:
错误域=com.facebook.sdk 代码=2“操作无法完成。(com.facebook.sdk 错误 2。)”UserInfo=0x1cd68c00 {com.facebook.sdk:ErrorLoginFailedReason=com.facebook.sdk:ErrorLoginFailedReason , com.facebook.sdk:ErrorInnerErrorKey=Error Domain=com.apple.accounts Code=7 "Facebook 服务器无法完成此访问请求:验证访问令牌时出错:由于用户更改了密码,会话已失效。" UserInfo=0x1cd5b970 {NSLocalizedDescription=Facebook 服务器无法完成此访问请求:验证访问令牌时出错:由于用户更改了密码,会话已失效。}}
那个内部错误域是ACErrorDomain
和错误代码ACErrorPermissionDenied
。那么,如何让用户重新授权应用呢?
我已经尝试openActiveSessionWithReadPermissions
再次调用,但只是不断输出相同的错误。我也尝试过[FBSession.activeSession closeAndClearTokenInformation]
,但这似乎没有任何作用(大概是因为没有activeSession
)。