Как мне авторизовать пользователя на вкладке страниц Facebook?

#php #javascript #facebook

#php #javascript #Facebook

Вопрос:

У меня проблемы с авторизацией пользователя на вкладке страницы Facebook. Я перепробовал много разных методов как в PHP, так и в Javascript, но в основном безрезультатно.

Если бы кто-нибудь мог объяснить это для меня и показать некоторый код, это было бы здорово! Я думал о том, чтобы выполнить авторизацию на PHP, а затем продолжить использовать Javascript с шириной пользовательских данных. Мне также нужно иметь возможность разрешить пользователю соглашаться на действия. итак, всплывающее окно для авторизации и разрешений — это то, с чем мне нужна помощь.

Что вы думаете? Есть ли лучший способ? Помощь с некоторым кодом для этого, как я уже сказал, была бы отличной!

Ответ №1:

Чтобы узнать, прошел ли пользователь проверку подлинности вашего приложения или нет, расшифруйте signed_request и проверьте, передан ли oauth_token:

 <?php     
$secret='APP_SECRET';
$signed_request=($_REQUEST['signed_request']);
function parse_signed_request($signed_request, $secret) {
list($encoded_sig, $payload) = explode('.', $signed_request, 2); 

// decode the data
$sig = base64_url_decode($encoded_sig);
$data = json_decode(base64_url_decode($payload), true);

if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
error_log('Unknown algorithm. Expected HMAC-SHA256');
return null;}

// check signature
$expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true);
if ($sig !== $expected_sig) {
error_log('Bad Signed JSON signature!');
return null;
}

return $data;
}

function base64_url_decode($input) {
return base64_decode(strtr($input, '-_', ' /'));
}

$information=parse_signed_request($signed_request, $secret);
$oauth_token=$information["oauth_token"];
?>
  

Затем используйте этот скрипт для аутентификации пользователя, если значение $oauth_token пустое:

  <?php 
     $app_id = "APP_ID";
     $canvas_page = "YOUR_TAB_URL";
     $auth_url = "http://www.facebook.com/dialog/oauth?client_id=" 
            . $app_id . "amp;redirect_uri=" . urlencode($canvas_page) . "amp;scope=ENTER WANTED  PERMISSIONS HERE";

     $signed_request = $_REQUEST["signed_request"];

     list($encoded_sig, $payload) = explode('.', $signed_request, 2); 

     $data = json_decode(base64_decode(strtr($payload, '-_', ' /')), true);

     if (empty($oauth_token)) {echo("<script> top.location.href='" . $auth_url .    "'</script>");}
   ?>
  

Заполните APP_SECRET, APP_ID, YOUR_TAB_URL и ТРЕБУЕМЫЕ РАЗРЕШЕНИЯ в этих скриптах, приветствия.