我下载了Parse示例AnyPic。我已经开始研究它将使用Parse的新应用程序的一些想法。 当AnyPic首次打开时,它要求用户使用facebook登录。我已经能够在模拟器上进行一些测试,但是现在我已经开始使用设备了,我无法通过Facebook登录。当我尝试它时,它会保留在登录屏幕上,只需更改登录按钮即可注销。我已经逐步完成了代码,发现facebook userID回来了。所有其他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返回零,而其他人有信息。我已经尝试将facebook用户ID硬编码到模拟器成功时提供的内容。这没效果。我也尝试将自己的Facebook应用ID替换为应用程序以查看,但它仍无法正常工作。
我是处理社交活动的新手,是否有一些我缺少设置Facebook的东西?或者有没有人使用这个例子知道如何解决它或能够跳过Facebook登录?
答案 0 :(得分:0)
我最终重新制作了一个新的Facebook应用ID。我将新信息分解为解析和应用程序。我还发现在设备上登录了错误的facebook帐户。一旦我登录了创建新Facebook应用程序ID的Facebook帐户,它就会立即生效。
答案 1 :(得分:0)
在设备上运行Anypic并在Facebook上提交支持票时,我遇到了同样的问题。他们确认在使用Facebook应用程序登录时出现问题,并建议使用PFFacebookUtils 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];
}
}
}];
}