0

我需要一个使用 facebook 的登录系统,这是我需要的一些要求,例如 facebook 登录,第一次登录我的网站时自动墙贴。需要将用户名、电子邮件、facebookid、访问令牌插入 mysql。当我使用此代码进行测试时,我创建了 facebook 应用程序 facebook 登录工作并重定向到我的页面,但没有墙贴,也没有插入数据库。

<?php
require_once('config.php');
require_once 'facebook.php';
$facebook = new Facebook(array(
    'appId'     => '##########',
    'secret'    => '#######################',
    'cookie'    => true
));


$user = $facebook->getUser();
$access_token = $facebook->getAccessToken();        
if($user)
{
$udata = $facebook->api($user);
$facebook_id=$udata['id'];
$name=$u['name'];
$email=$u['email'];
$gender=$u['gender'];

$query = mysql_query("SELECT * FROM facebookusers WHERE facebook_id = '$facebook_id' ");
$count=mysql_num_rows($query);

if($count == 0)
{
$ins = "INSERT INTO `facebookusers` (`facebook_id`, `name`, `email`, `gender`, `access_token`) 
VALUES ('$facebook_id', '$name', '$email', '$gender', '$access_token')";
$result = mysql_query($ins) or die('Failed to connect to server: ' . mysql_error());

$news = array(
            'access_token'  => '$access_token',
            'message'       => 'Test Message',
            'name'          => 'Facebook Application Test Link',
            'link'          => 'mydomain.com',
            'caption'       => 'Test Caption',
            'description'   => 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.',
            'picture'       => './picture.png'
        );

        $facebook->api('/me/feed', 'POST', $news);
}       
        ?>
<?php
}
else
{

$loginUrl = $facebook->getLoginUrl(array( 'req_perms' => 'email,user_birthday,status_update,offline_access'));
echo '<a href="'.$loginUrl.'"><img src="facebook.png" title="Login with Facebook" /></a>';

}

?>
4

1 回答 1

0

每次用户使用您的网站或 Facebook 应用程序时访问令牌都会更改,因此您不应该存储它,我还应该提到大多数用户不会太愿意授予对其帐户和新闻提要的离线访问权限

您需要使用范围来访问扩展权限$loginUrl = $facebook->getLoginUrl(array( 'scope' => 'read_stream,etc')); 并确保请求此处定义的权限:https ://developers.facebook.com/docs/reference/login/extended-permissions/

正如我所说,要求最低限度,因为您可能会让用户离开您的应用程序并降低他们向您提供信息的可能性,他们必须在首次登录时确认访问权限。

最后尝试从查询中的列名中去掉引号

$ins = "INSERT INTO `facebookusers` (facebook_id,name,email,gender) VALUES ('$facebook_id', '$name', '$email', '$gender')";

希望对朋友有帮助

于 2013-09-24T08:21:18.243 回答