диалоговое окно разрешения javascript на facebook для электронной почты

#facebook-graph-api #facebook #facebook-javascript-sdk

#facebook-graph-api #Facebook #facebook-javascript-sdk

Вопрос:

у меня вопрос…. я на самом деле разрабатываю приложение facebook с помощью FB javascript SDK. В моем приложении мне нужно разрешение электронной почты для дальнейшей обработки. я использую

FB.Connect.showPermissionDialog(«электронная почта»); но какое-то диалоговое окно не отображается… вот мой код

  <script>
    appid = '*************';
    name = 'Palmchip Test App';
    href = 'https://apps.facebook.com/*********/';
    FB.init({
    appId:appid, cookie:true,
    status:true, xfbml:true
    });
    FB.getLoginStatus(function(response) {
    if (response.session) {
    alert("You are logged in...");
    FB.Connect.showPermissionDialog("email", function(perms) {
           if (!perms) {
            alert("no access");
           } else {
               alert("accessed...");
           }
         });
    }
    else {
    top.location.href='https://graph.facebook.com/oauth/authorize?client_id=' appid 'amp;redirect_uri=' href 'amp;display=page';
    }
    });

</script>
  

предупреждение, в котором говорится, что вы вошли в систему…работает нормально, но затем ничего не происходит…..

Ответ №1:

  1. Вам необходимо перейти на OAuth 2.0 ouath: true
  2. Вы должны использовать новое диалоговое окно OAuth
  3. Вы должны знать, что при обновлении FB.getLoginStatus() будут возвращены разные объекты: response.authResponse

Комментарии:

1. я попробовал диалоговую ссылку OAuth и даже используя точно такой же код, упомянутый там, я все еще не получаю ответа: ( n после использования примера прямого URL я вижу большой значок Facebook на странице, на которую я нажимаю, а затем меня перенаправляют в диалог разрешений разрешить диалог

Ответ №2:

Попробуйте этот блок кода

 FB.init({appId: <?= APP_ID ?>, status: true, cookie: true, xfbml: true, oauth:true});

function getin(){
    FB.login(function(response) {
        if (response.authResponse) {
            var regurl = "/login";
            location.href=regurl;

        } else {
            var regurl = "/logout";
            window.location.href=regurl;
        }
    }, {scope:'email'});

}
  

Поэтому, когда вы вызываете функцию getin() , если текущий пользователь уже дал вам адрес электронной почты, он ничего не сделает для него, просто перенаправит его на / login url , но если пользователь является новым пользователем, он / она увидит всплывающее окно с запросом адреса электронной почты один разон / она позволяет вам извлекать адрес электронной почты с помощью graph или fql. Ответ BTW внутри FB.login содержит идентификатор пользователя, access_toke и еще некоторые полезные данные, поэтому сохраните их для дальнейшего использования.