我正在开发使用Parse和Facebook的iOS应用程序。
对于Facebook登录,我按照此页面上的指南进行操作:https://www.parse.com/tutorials/integrating-facebook-in-ios
按照指南,我有这段代码验证缓存的会话:
// check if this cached session is still valid?
// does nothing if still valid
- (void) validateCachedSession
{
FBRequest *request = [FBRequest requestForMe];
[request startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
if (!error)
{
// handle successful response
LogObvious(@"Facebook session validated. No problem");
}
else if ([error.userInfo[FBErrorParsedJSONResponseKey][@"body"][@"error"][@"type"] isEqualToString:@"OAuthException"])
{ // Since the request failed, we can check if it was due to an invalid session
LogObvious(@"The facebook session was invalidated. Announce logged Out");
// The persisted session is invalid. Logout!
[self logout];
}
else
{
LogObvious(@"The facebook session was invalidated. Announce logged Out");
// The persisted session is invalid. Logout!
[self logout];
}
}];
}
如上所示,如果缓存的会话无效,则应调用logout:
- (void) logout
{
[PFUser logOut];
// Over here we will show the login button again.
}
为了测试这个。我首先使用Facebook帐户登录我的应用程序。然后,我更改了密码并重新访问了应用程序。
应用正确识别会话失效并调用注销。
但是当我再次点击登录时,登录功能将返回此错误:
Uh oh. An error occurred: Error Domain=com.facebook.sdk Code=5 "The operation couldn’t be completed. (com.facebook.sdk error 5.)" UserInfo=0x1e066140 {com.facebook.sdk:ErrorInnerErrorKey=Error Domain=com.apple.accounts Code=1 "Server refused renewal request with error code: 190" UserInfo=0x1d56df10 {NSLocalizedDescription=Server refused renewal request with error code: 190}, com.facebook.sdk:ParsedJSONResponseKey={
body = {
error = {
code = 190;
"error_subcode" = 65001;
};
};
}}
为什么?即使我终止应用程序并重新启动它。该应用程序现在将停留在此状态 - 无法登录。任何帮助将不胜感激。
p / s:要清楚,这是我的登录功能:
// to be called when user explicitly clicked a login button
- (void) loginByFacebookWithPermissions:(NSArray*)permissionsArray
{
LogFunctionCalledObvious();
[PFFacebookUtils logInWithPermissions:permissionsArray block:^(PFUser *user, NSError *error)
{
if (!user)
{
if (!error)
{
NSLog(@"Uh oh. The user cancelled the Facebook login.");
} else
{
NSLog(@"Uh oh. An error occurred: %@", error);
[self logout];
}
} else if (user.isNew)
{
LogObvious(@"User with facebook signed up and logged in!");
[self requestLoggedInUserInfo];
} else
{
LogObvious(@"User with facebook logged in!");
[self requestLoggedInUserInfo];
}
}];
}
p / s2:好的,经过更多的调查,它一直处于这种状态,直到我进入设置 - > Facebook重新输入新密码。这是正确的行为吗?当我从Facebook.com更改Facebook密码时,iOS6不应该立即提醒用户更改密码吗?
答案 0 :(得分:1)
您的错误子代码指向此
static const int FBSDKSystemPasswordErrorSubcode = 65001;
case FBSDKSystemPasswordErrorSubcode:
case FBAuthSubcodePasswordChanged:
if (subcode == FBSDKSystemPasswordErrorSubcode
|| [FBErrorUtility fberrorIsErrorFromSystemSession:error]) {
userMessageKey = @"FBE:PasswordChangedDevice";
userMessageDefault = @"Your Facebook password has changed. To confirm your password, open Settings > Facebook and tap your name.";
shouldNotifyUser = YES;
} else {
userMessageKey = @"FBE:PasswordChanged";
userMessageDefault = @"Your Facebook password has changed. Please log into this app again to reconnect your Facebook account.";
}
break;
您必须以某种方式向用户发送消息
您的Facebook密码已更改。要确认密码,请打开设置> Facebook并点按你的名字。
或
您的Facebook密码已更改。请再次登录此应用以重新连接您的Facebook帐户。