Facebook使用php mysql登录自动墙贴和数据库插入

时间:2013-09-24 07:37:57

标签: php facebook

我需要一个使用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>';

}

?>

1 个答案:

答案 0 :(得分:0)

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

您需要使用范围来访问扩展权限$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')";

希望有助于交配