使用Facebook SDK for IOS和Facebook Graph API无法获取电子邮件地址

6

我正在尝试获取用户的电子邮件地址。他登录后,我请求访问其电子邮件权限,并选择允许。然后我使用Facebook的图形API来访问其电子邮件地址。


- (void) fbDidLogin
{
  btnLogin.isLoggedIn = TRUE;
  [btnLogin updateImage];

  NSString *theURL = 
  [ [NSString stringWithFormat: 
    @"https://graph.facebook.com/me?access_token=%@", facebook.accessToken
    ]stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding
  ];

  NSLog(@"%@", theURL);
  [facebook requestWithGraphPath: theURL andDelegate: self];
}

...

- (void)request:(FBRequest*)request didLoadRawResponse:(NSData*)data
{
  NSString *response = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
  NSLog(@"%@", response);
  [response release];
}

这是我获取信息的方法:

- (void) request:(FBRequest*)request didLoad:(id)result
{
  if ([result isKindOfClass:[NSDictionary class]])
  {
    NSString *email = [result objectForKey: @"email"];
    NSString *name = [result objectForKey: @"name"];
    NSString *facebookId = [result objectForKey: @"id"];
    //...
  }
}

我只收到了这个字符串:{ id = "https://graph.facebook.com/me"; } 我做错了什么?
2个回答

8

我找到了答案:

 NSArray *permissions = [[NSArray alloc] initWithObjects:@"user_likes",@"offline_access",@"read_stream",@"publish_stream",@"email",nil];

  [facebook requestWithGraphPath:@"me"andParams:params andDelegate:self];
  -(void)facebookLoginScreen:(NSDictionary *)result
   {
        NSLog(%@,[result objectForKey:@"email"]);
   }

4
啊,算了,它可以工作了。我必须在[facebook requestWithGraphPath: @"me" andDelegate: self];中使用@"me"而不是URL。

@kudor:在调用requestWithGraphPath:@"me"之后,您是如何提取所需的信息(例如您的情况下的电子邮件)的?我需要用户名。 - WaJiyaz
我会把代码放在我的问题里!你会得到一个 NSDictionary,然后你需要从中获取值。 - gyozo kudor
嗨,我试过了,但是收到的响应是“OAuthException”:“必须使用活动访问令牌来查询有关当前用户的信息”,所以我想它没有达到请求didLoad。 - WaJiyaz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接