0

我无法将我的 Facebook 数据(登录数据)存储到我的个人 SQL 数据库中。在这里您可以找到我的代码:我首先使用索引页面,然后使用登录页面将我的 facebook 数据登录存储在我的数据库中。在我的登录页面中,我重定向到我的 user_page。但是当我重定向到我的 user_page 时,Facebook 数据没有被存储,我得到了链接https://localhost/project/login.php?error_code=901&error_message=This+app+is+in+sandbox+mode.++Edit+the+app+configuration+at+http%3A%2F%2Fdevelopers.facebook.com%2Fapps+to+make+the+app+publicly+visible.&state=7504294781f7ae045299820cb5c40ead#_=_

索引页面代码

<?php  

require 'facebook-php-sdk/src/facebook.php';

define('APP_URL', 'https://localhost/project/login.php');
define('APP_PERMISSIONS', '');

// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
  'appId'  => 'APPID', 
  'secret' => 'SECRET',
  'cookie' => true
));

$loginUrlParams = array(
  'scope' => APP_PERMISSIONS,
  'redirect_uri' => APP_URL,
);

// Get User ID
$user = $facebook->getUser();

// We may or may not have this data based on whether the user is logged in.
//
// If we have a $user id here, it means we know the user is logged into
// Facebook, but we don't know if the access token is valid. An access
// token is invalid if the user logged out of Facebook.

if ($user) {
  try {
    // Proceed knowing you have a logged in user who's authenticated.
     $fbuid = $facebook->getUser();
     $user_profile = $facebook->api('/me');

    // header('Location: user_page.php');
  } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
    header('Location: ' . $facebook->getLoginUrl($loginUrlParams));
        exit;
  }
  }
    else
    {
    header('Location: ' . $facebook->getLoginUrl($loginUrlParams));
    exit;
   }
?>

登录页面代码:

<?php

define("db_DATABASE", "phples"); 
define("db_SERVER", "localhost");
define("db_USER", "root"); 
define("db_PASS", "");

$conn=new mysqli(db_SERVER,db_USER,db_PASS,db_DATABASE);

require 'facebook-php-sdk/src/facebook.php';

  // Create our Application instance (replace this with your appId and secret).
   $facebook = new Facebook(array(
  'appId'  => 'APPID',
  'secret' => 'SECRET',
   'cookie' => true));


// Get User ID
$user = $facebook->getUser();

if($user){

 $user_profile = $facebook->api('/me');

    $query = mysql_query("SELECT * FROM facebook_users WHERE oauth_provider = 'facebook' AND oauth_uid = ". $user_profile['id']);
    $result = mysql_fetch_array($query);

    if(empty($result)){
        $query = mysql_query("INSERT INTO facebook_users (oauth_provider, oauth_uid, username) VALUES ('facebook', {$user_profile['id']}, '{$user_profile['name']}')");

        header('Location: user_page.php');

                               }else{
        header('Location: user_page.php');
         }


          }else{

        header('Location: logout.php');


        }

           ?>

用户页面代码:

<?
require 'facebook-php-sdk/src/facebook.php';

// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
  'appId'  => 'APPID', 
  'secret' => 'SECRET',
  'cookie' => true
));

// Get User ID
$user = $facebook->getUser();

// We may or may not have this data based on whether the user is logged in.
//
// If we have a $user id here, it means we know the user is logged into
// Facebook, but we don't know if the access token is valid. An access
// token is invalid if the user logged out of Facebook.

if ($user) {
  try {
    // Proceed knowing you have a logged in user who's authenticated.
    $fbuild = $facebook->getUser();
    $user_profile = $facebook->api('/me');

  } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
  }
   }

// Login or logout url will be needed depending on current user state.
if ($user) {
         $paramsout = array('next'=>'http://localhost/project/logout.php');
         $logoutUrl = $facebook->getLogoutUrl($paramsout);
}


?>
4

1 回答 1

0

该错误说明您的应用程序可能存在什么问题。正如它所说

error_message=这个+app+is+in+sandbox+mode.++Edit+the+app+configuration+at+http%3A%2F%2Fdevelopers.facebook.com%2Fapps+to+make+the+app+publicly+可见的。

您正在沙盒模式下运行您的应用程序。在这种模式下,只有开发人员、测试人员和与应用程序相关的其他人可以使用它,但除他们之外的任何人都不能使用。因此,更改您的应用设置并禁用sandbox mode.

编辑

根据您的评论,错误状态

应用程序的设置不允许一个或多个给定的 URL。它必须与网站 URL 或画布 URL 匹配,或者域必须是应用程序域之一的子域

正如它所说,您应该https://localhost/在您Website with Facebook Login的应用程序设置中添加,以便 Facebook 可以重定向回您的页面。

于 2013-05-13T06:06:02.967 回答