Nano Hash - криптовалюты, майнинг, программирование

Сбой кнопки входа в Facebook (facebook-php-sdk) на call-back.php

У меня есть веб-сайт PHP с facebook-connect (facebook-php-sdk), у которого есть кнопка входа в Facebook на моей индексной странице. Кнопка входа отображалась и функционировала на моем этапе разработки cloud9 (настольный/мобильный). Затем я отправил приложение на Heroku, и появилась кнопка входа в систему, но она вылетает, как только они нажимают на мой login-callback.php.

После небольшого исследования я обнаружил, что мне нужно нажать: FACEBOOK_APP_ID=xxxxxxxxxxxxxxx \ FACEBOOK_SECRET=xxxxxxxxxxxxxxx

Как только я добавил эти config-vars, моя кнопка входа в систему исчезла в мобильных браузерах, а настольные браузеры по-прежнему вылетали на странице login-callback.php. Я копался несколько дней и не мог найти никакой информации по этому поводу.

Мой сайт: https://nolarec.org или https://nolarec.herokuapp.com/

логин-callback.php

<?php
session_start();
require_once __DIR__ . '/src/Facebook/autoload.php';

$fb = new Facebook\Facebook([
  'app_id' => 'xxxxxxxxxxxxxxx',
  'app_secret' => 'xxxxxxxxxxxxxxx',
  'default_graph_version' => 'v2.5'
]);

$helper = $fb->getJavaScriptHelper();

try {
  $accessToken = $helper->getAccessToken();
  } catch(Facebook\Exceptions\FacebookResponseException $e) {
    // When Graph returns an error
    echo 'Graph returned an error: ' . $e->getMessage();
} catch(Facebook\Exceptions\FacebookSDKException $e) {
    // When validation fails or other local issues
    echo 'Facebook SDK returned an error: ' . $e->getMessage();
}

if (isset($accessToken)) {
   $fb->setDefaultAccessToken($accessToken);

  try {

    $requestProfile = $fb->get("/me?fields=name,email");
    $profile = $requestProfile->getGraphNode()->asArray();
  } catch(Facebook\Exceptions\FacebookResponseException $e) {
    // When Graph returns an error
    echo 'Graph returned an error: ' . $e->getMessage();
  } catch(Facebook\Exceptions\FacebookSDKException $e) {
    // When validation fails or other local issues
    echo 'Facebook SDK returned an error: ' . $e->getMessage();
  }

  $_SESSION['name'] = $profile['name'];

  setcookie('name', $profile['name'], time() + (3600 *2), "/");
  header('location: ../');
  exit;
} else {
    echo "Unauthorized access!!!";
    exit;
}

fb.js

function statusChangeCallback(response) {
    console.log('statusChangeCallback');
    console.log(response);
    // The response object is returned with a status field that lets the
    // app know the current login status of the person.
    // Full docs on the response object can be found in the documentation
    // for FB.getLoginStatus().
    if (response.status === 'connected') {
        // Logged into your app and Facebook.
        window.location.replace('./fbapp/login-callback.php');
    } else if (response.status === 'not_authorized') {
        // The person is logged into Facebook, but not your app.
    } else {
        // The person is not logged into Facebook, so we're not sure if
        // they are logged into this app or not.
    }
}

function checkLoginState() {
    FB.getLoginStatus(function(response) {
      statusChangeCallback(response);
    });
}

window.fbAsyncInit = function() {
    FB.init({
    appId      : 'xxxxxxxxxxxxxx',
    cookie     : true,  // enable cookies to allow the server to access 
                        // the session
    xfbml      : true,  // parse social plugins on this page
    version    : 'v2.5' // use any version
});

};

// Load the SDK asynchronously
(function(d, s, id) {
    var js, fjs = d.getElementsByTagName(s)[0];
    if (d.getElementById(id)) return;
    js = d.createElement(s); js.id = id;
    js.src = "//connect.facebook.net/en_US/sdk.js";
    fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));

Соответствующий фрагмент index.php

<?php 
      session_start();

      require_once('c9_config.php');

 ?>
 <!DOCTYPE html>
         <html>
              <head>
                <meta charset="utf-8">
                <title> Nola Rec Connect | New Orleans Recreational HUB</title>
                <link rel="stylesheet" type="text/css" href="css/normalize.css">
                <link href='https://fonts.googleapis.com/css?family=Alegreya+SC:700' rel='stylesheet' type='text/css'>
                <link href='https://fonts.googleapis.com/css?family=Crimson+Text' rel='stylesheet' type='text/css'>
                <link href='https://fonts.googleapis.com/css?family=Open+Sans+Condensed:300' rel='stylesheet' type='text/css'>
                <link rel="stylesheet" type="text/css" href="css/main.css">
                <link rel="stylesheet" type="text/css" href="css/Responsive.css">
                <meta name="viewport" content="width=device-width, initial-scale=1.0">
                 <script type="text/javascript" src="./fbapp/fb.js"></script>
              </head>
              <body>

                <header>
                    <a href="index.php" id="logo">
                    <h1>Nola Rec Connect </h1>
                    </a>
                    <nav>
                    <ul>
                    <a href="nav/calendar/calendar.php" >Calendar</a>
                    <a href="nav/about/about.php">About</a>
                    <a href="nav/contact/contact.php">Contact</a>
                    <a href="nav/map/map.php">Maps</a>
                    </ul>
                    </nav>
                </header>

                <h1><?php if (isset($_COOKIE['name'])) {echo $_COOKIE['name']; } ?></h1>
                <?php if (isset($_COOKIE['name'])) { } else { ?><div class="fb-login-button" data-scope="public_profile,email" onlogin="checkLoginState();"></div><?php } ?>

Любая помощь будет высоко оценен.


Ответы:


1

Похоже, мне нужно было установить надстройку OAuth.io в Heroku. После того, как я установил OAuth.io, я вставил свой открытый и секретный ключ Facebook и добавил свой домен на общую вкладку. Затем проверил соединение на вкладке «Интегрированный API». Не на 100% уверен, что это исправило это, но теперь это работает.

01.02.2016
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..