解析 AnyPic Facebook 用户 ID 返回 nil
Parse AnyPic Facebook userId is returning nil
我下载了 Parse 示例 AnyPic。我已经开始研究它,为我将使用 Parse 的新应用寻找一些想法。
当 AnyPic 首次打开时,它要求用户使用 facebook 登录。我已经能够在模拟器上进行一些测试,但是现在我已经在设备上启动了,我无法通过 facebook 登录。当我尝试时,它停留在登录屏幕上,只是将登录按钮更改为注销。我已经逐步完成代码,发现 facebook 用户 ID 返回 nil。所有其他 Facebook 信息似乎都在返回值。
NSString *accessToken = [[[FBSession activeSession] accessTokenData] accessToken];
NSDate *expirationDate = [[[FBSession activeSession] accessTokenData] expirationDate];
NSString *facebookUserId = [[[FBSession activeSession] accessTokenData] userID];
if (!accessToken || !facebookUserId) {
NSLog(@"Login failure. FB Access Token or user ID does not exist");
return;
}
facebokUserId返回nil,而其他人有信息。我已经尝试将 facebook 用户 ID 硬编码为模拟器在成功时提供的内容。这没有奏效。我也试过把自己的facebook app ID替换到app里看,还是不行。
我刚开始接触社交内容,设置 Facebook 时是否缺少某些内容?或者有没有人使用过这个例子知道如何修复它或能够跳过 facebook 登录?
我最终重新制作了一个新的 Facebook 应用 ID。我将新信息替换为解析和应用程序。我还发现在设备上登录了错误的 facebook 帐户。一旦我登录到创建新的 Facebook 应用程序 ID 的 Facebook 帐户,它就可以立即使用。
当 运行 在设备上使用 Anypic 并向 Facebook 提交支持票时,我遇到了同样的问题。他们确认这是使用 Facebook 应用程序登录时的一个问题,并建议使用 PFFFacebookUtils logInWithPermissions 作为解决方法,直到他们能够进一步调查为止。我将 PAPLogInViewController.m 中的 handleFacebookSession 方法更改为以下代码,终于可以使用设备登录了!
- (void)handleFacebookSession {
if ([PFUser currentUser]) {
if (self.delegate && [self.delegate respondsToSelector:@selector(logInViewControllerDidLogUserIn:)]) {
[self.delegate performSelector:@selector(logInViewControllerDidLogUserIn:) withObject:[PFUser currentUser]];
}
return;
}
NSArray *permissionsArray = @[ @"public_profile",
@"user_friends",
@"email"];
self.hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
// Login PFUser using Facebook
[PFFacebookUtils logInWithPermissions:permissionsArray block:^(PFUser *user, NSError *error) {
if (!user) {
NSString *errorMessage = nil;
if (!error) {
NSLog(@"Uh oh. The user cancelled the Facebook login.");
errorMessage = @"Uh oh. The user cancelled the Facebook login.";
} else {
NSLog(@"Uh oh. An error occurred: %@", error);
errorMessage = [error localizedDescription];
}
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Log In Error"
message:errorMessage
delegate:nil
cancelButtonTitle:nil
otherButtonTitles:@"Dismiss", nil];
[alert show];
} else {
if (user.isNew) {
NSLog(@"User with facebook signed up and logged in!");
} else {
NSLog(@"User with facebook logged in!");
}
if (!error) {
[self.hud removeFromSuperview];
if (self.delegate) {
if ([self.delegate respondsToSelector:@selector(logInViewControllerDidLogUserIn:)]) {
[self.delegate performSelector:@selector(logInViewControllerDidLogUserIn:) withObject:user];
}
}
} else {
[self cancelLogIn:error];
}
}
}];
}
我下载了 Parse 示例 AnyPic。我已经开始研究它,为我将使用 Parse 的新应用寻找一些想法。 当 AnyPic 首次打开时,它要求用户使用 facebook 登录。我已经能够在模拟器上进行一些测试,但是现在我已经在设备上启动了,我无法通过 facebook 登录。当我尝试时,它停留在登录屏幕上,只是将登录按钮更改为注销。我已经逐步完成代码,发现 facebook 用户 ID 返回 nil。所有其他 Facebook 信息似乎都在返回值。
NSString *accessToken = [[[FBSession activeSession] accessTokenData] accessToken];
NSDate *expirationDate = [[[FBSession activeSession] accessTokenData] expirationDate];
NSString *facebookUserId = [[[FBSession activeSession] accessTokenData] userID];
if (!accessToken || !facebookUserId) {
NSLog(@"Login failure. FB Access Token or user ID does not exist");
return;
}
facebokUserId返回nil,而其他人有信息。我已经尝试将 facebook 用户 ID 硬编码为模拟器在成功时提供的内容。这没有奏效。我也试过把自己的facebook app ID替换到app里看,还是不行。
我刚开始接触社交内容,设置 Facebook 时是否缺少某些内容?或者有没有人使用过这个例子知道如何修复它或能够跳过 facebook 登录?
我最终重新制作了一个新的 Facebook 应用 ID。我将新信息替换为解析和应用程序。我还发现在设备上登录了错误的 facebook 帐户。一旦我登录到创建新的 Facebook 应用程序 ID 的 Facebook 帐户,它就可以立即使用。
当 运行 在设备上使用 Anypic 并向 Facebook 提交支持票时,我遇到了同样的问题。他们确认这是使用 Facebook 应用程序登录时的一个问题,并建议使用 PFFFacebookUtils logInWithPermissions 作为解决方法,直到他们能够进一步调查为止。我将 PAPLogInViewController.m 中的 handleFacebookSession 方法更改为以下代码,终于可以使用设备登录了!
- (void)handleFacebookSession {
if ([PFUser currentUser]) {
if (self.delegate && [self.delegate respondsToSelector:@selector(logInViewControllerDidLogUserIn:)]) {
[self.delegate performSelector:@selector(logInViewControllerDidLogUserIn:) withObject:[PFUser currentUser]];
}
return;
}
NSArray *permissionsArray = @[ @"public_profile",
@"user_friends",
@"email"];
self.hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
// Login PFUser using Facebook
[PFFacebookUtils logInWithPermissions:permissionsArray block:^(PFUser *user, NSError *error) {
if (!user) {
NSString *errorMessage = nil;
if (!error) {
NSLog(@"Uh oh. The user cancelled the Facebook login.");
errorMessage = @"Uh oh. The user cancelled the Facebook login.";
} else {
NSLog(@"Uh oh. An error occurred: %@", error);
errorMessage = [error localizedDescription];
}
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Log In Error"
message:errorMessage
delegate:nil
cancelButtonTitle:nil
otherButtonTitles:@"Dismiss", nil];
[alert show];
} else {
if (user.isNew) {
NSLog(@"User with facebook signed up and logged in!");
} else {
NSLog(@"User with facebook logged in!");
}
if (!error) {
[self.hud removeFromSuperview];
if (self.delegate) {
if ([self.delegate respondsToSelector:@selector(logInViewControllerDidLogUserIn:)]) {
[self.delegate performSelector:@selector(logInViewControllerDidLogUserIn:) withObject:user];
}
}
} else {
[self cancelLogIn:error];
}
}
}];
}