无法在facebook oauth登录中检索电子邮件

无法在facebook oauth登录中检索电子邮件,facebook,perl,Facebook,Perl,我的问题是请求用户数据的$info变量没有提供电子邮件。您可以在我的fblogin()代码中看到我使用的电子邮件范围。如果你看这里:debug($info->as_json)它只包含{“Name”:“somename”,“id”:“someid”} 我尝试将$access\u数据转储为: foreach $key (keys %access_data) { debug("$key $access_data{$key}"); } 但这似乎并不正确 以下是我的调试函数

我的问题是请求用户数据的
$info
变量没有提供电子邮件。您可以在我的
fblogin()
代码中看到我使用的
电子邮件范围
。如果你看这里:
debug($info->as_json)它只包含
{“Name”:“somename”,“id”:“someid”}

我尝试将
$access\u数据转储为:

 foreach $key (keys %access_data) {
   debug("$key $access_data{$key}");
 }
但这似乎并不正确

以下是我的调试函数:

sub debug {
  my $str=shift;
  my @lt=localtime(time());
  my $ts=sprintf("%d%2.2d%2.2d %2.2d:%2.2d",@lt[5]+1900,@lt[4]+1,@lt[3],@lt[2],@lt[1]);
  open(FD,">>/file");
  print FD "[$ts] $str\n";
  close(FD);
}
任何帮助都将不胜感激

sub fblogin(){
  my $fb = Net::Facebook::Oauth2->new(
    application_id     => 'XXXX',
    application_secret => 'XXXX',
    callback           => 'URL'
  );
  # get the authorization URL for your application
  my $url = $fb->get_authorization_url(
    scope   => [ 'email' ],
    display => 'page'
  );
  print "Location: $url\n\n";
}

sub fbcallback(){
   my $fb = Net::Facebook::Oauth2->new(
     application_id     => 'XXXX',
     application_secret => 'XXXX',
     callback           => 'URL'
   );
   my $query=new CGI;
   my $code = $query->param('code');
   my ($unique_id, $access_token);
   try {
     $access_token = $fb->get_access_token(code => $code); # <-- could die!

     # Facebook tokens last ~2h, but you may upgrade them to ~60d if you want:
     $access_token = $fb->get_long_lived_token( access_token => $access_token );

     my $access_data = $fb->debug_token( input => $access_token );
     if ($access_data && $access_data->{is_valid}) {
        $unique_id = $access_data->{user_id};
        # you could also check here for what scopes were granted to you
        # by inspecting $access_data->{scopes}->@*
        my $info = $fb->get(
                'https://graph.facebook.com/v3.1/me'   # Facebook API URL
        );
        debug($info->as_json);
      }
   } catch {
     # handle errors here!
   }
}
sub-fblogin(){
my$fb=Net::Facebook::Oauth2->新建(
应用程序\u id=>XXXX',
应用程序\u secret=>“XXXX”,
回调=>'URL'
);
#获取应用程序的授权URL
my$url=$fb->get\u authorization\u url(
范围=>[“电子邮件”],
显示=>“页面”
);
打印“位置:$url\n\n”;
}
sub-fbcallback(){
my$fb=Net::Facebook::Oauth2->新建(
应用程序\u id=>XXXX',
应用程序\u secret=>“XXXX”,
回调=>'URL'
);
my$query=新CGI;
我的$code=$query->param('code');
我的($unique\u id,$access\u token);
试一试{
$access_-token=$fb->get_-access_-token(code=>$code);#get_-long_-live_-token(access_-token=>$access_-token);
我的$access\u数据=$fb->调试\u令牌(输入=>$access\u令牌);
if($access\u data&&$access\u data->{is\u valid}){
$unique_id=$access_data->{user_id};
#您还可以在这里查看授予您的作用域
#通过检查$access_data->{scopes}->@*
我的$info=$fb->get(
'https://graph.facebook.com/v3.1/me“#Facebook API URL
);
调试($info->as_json);
}
}抓住{
#在这里处理错误!
}
}

尝试在
get
调用的URL中使用
字段
查询参数。例如,此URL
https://graph.facebook.com/{your user id}?fields=email
可能根据Try在
get
调用的URL中使用
fields
查询参数的可能重复工作。例如,此URL
https://graph.facebook.com/{your user id}?fields=email
可能根据