не получаю почту в фейсбуке - PullRequest
1 голос
/ 04 октября 2019

Моя проблема в том, что переменная $info, которая запрашивает данные пользователя, не предоставляет адрес электронной почты. Вы можете видеть в моем fblogin() коде, который я использую email scope. Если вы посмотрите здесь: debug($info->as_json); он содержит только {"Name":"somename","id":"someid"}

Я попытался сбросить $access_data как:

 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!
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...