我是iOS新手,我想为我的应用程序登录facebook。
我用facebook的新ios sdk尝试了很多。但是我收到了错误。
代码是
-(IBAction)logIn:(id)sender;
{
AppDelegate *appdelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[appdelegate sessionOpener];
FBRequest *me = [FBRequest requestForMe];
[me startWithCompletionHandler: ^(FBRequestConnection *connection,
NSDictionary<FBGraphUser> *my,
NSError *error) {
NSLog(@"id %@", my.id);
NSLog(@"name %@", my.first_name);
greet.text = my.first_name;//this is a label to show the name
user.userID = my.id;//this is a FBProfilePictureView to show
}];
[UIView transitionFromView:self.view
toView:userPage
duration:0.5
options:(UIViewAnimationOptionTransitionFlipFromRight | UIViewAnimationOptionTransitionFlipFromLeft)
completion:NULL]; }
`
and sessionOpener is;
-(void) sessionOpener{
[FBSession sessionOpenWithPermissions:nil
completionHandler:^(FBSession *session,
FBSessionState status,
NSError *error) {
// session might now be open.
}];
}
现在我得到的错误是; 当我首次登录到应用程序后,登录值返回null 我收到了http 400错误。
但是在我第二次运行应用程序时登录后,它获取信息为true并打印我的名字。
我的模拟器iphone 5.1模拟器
答案 0 :(得分:5)
尝试创建会话对象并将其添加到请求中:
NSArray *permissions = [[NSArray alloc] initWithObjects:
@"email",
@"publish_stream"
nil];
FBSession facebook_session = [[FBSession alloc] initWithPermissions:permissions];`
[[[FBRequest alloc] initWithSession:facebook_session graphPath:@"me"] startWithCompletionHandler:
^(FBRequestConnection *connection,
NSDictionary<FBGraphUser> *user,
NSError *error) {
if (!error) {
// get the data from user object
}else {
NSLog(@"Error: %@",error);
}
}];`