[英]Facebook App: Get user info, insert to DB, and auto post on wall
我正在學習如何為Facebook創建應用。 我需要一個應用程序,該應用程序在獲得用戶授權后,會收集用戶的信息(姓名,電子郵件,生日),將其插入到數據庫中,並在用戶牆上自動張貼。
我有這段代碼,但是當我運行它時,瀏覽器告訴我該網頁導致了太多重定向。
我進行了很多搜索並測試了許多不同的方法。 似乎該代碼以前曾起作用過,但facebook進行了一些更改。 我已盡力更新它,但沒有結果。 請看一下並指導我解決它。
謝謝這是我作為根目錄中的index.php保存的代碼。
<?php
session_start();
if (!empty($_SESSION)) {
header("Location: index.php");
}
mysql_connect('host', 'username', 'pass');
mysql_select_db('dbname');
# require library
require("src/facebook.php");
# Creating the facebook object
$facebook = new Facebook(array(
'appId' => 'xxxxxx',
'secret' => 'xxxxxxxx',
'cookie' => true
));
# check active session
$user = $facebook->getUser();
if (!empty($user)) {
# session active, get user id (getUser()) and user info (api->('/me'))
try {
$uid = $facebook->getUser();
$fb_access_token=$user['access_token'];
$url = $facebook->getLoginUrl(array(
'req_perms' => 'email,status_update,publish_stream,user_birthday'
));
$user = $facebook->api('/me');
$photolink = 'http://graph.facebook.com/'.$user['id'].'/picture?type=square';
$param = array(
'method' => 'users.getInfo',
'uids' => uid,
'fields' => 'pic_big'
);
$users_getinfo = $facebook->api($param);
} catch (Exception $e) {
}
if (!empty($user)) {
# active session, check if already registered the user
$query = mysql_query("SELECT * FROM users WHERE oauth_provider = 'facebook' AND oauth_uid = " . $user['id']);
$result = mysql_fetch_array($query);
# If not, add it to the database
if (empty($result)) {
$query = mysql_query("INSERT INTO users (oauth_uid, oauth_provider, username, first_name, last_name, birthday, email, pic_square) VALUES ('facebook', {$user['id']}, '{$user['name']}', '{$user['first_name']}', '{$user['last_name']}', '{$user['birthday']}', '{$user['email']}', '".$photolink."')");
$query = mysql_query("SELECT * FROM users WHERE id = " . mysql_insert_id());
$result = mysql_fetch_array($query);
}
// variables in the session
$_SESSION['id'] = $result['id'];
$_SESSION['oauth_uid'] = $result['oauth_uid'];
$_SESSION['oauth_provider'] = $result['oauth_provider'];
$_SESSION['username'] = $result['username'];
} else {
# if error, kill the script
die("There was an error.");
}
$api_call = array(
'method' => 'users.hasAppPermission',
'uid' => $uid,
'ext_perm' => 'publish_stream'
);
$can_post = $facebook->api($api_call);
if ($can_post) {
# post it!
$facebook->api('/' . $uid . '/feed', 'post', array(
'message' => 'Wow you can get good prizes!',
'name' => 'Be happy',
'description' => 'Tour around the world',
'caption' => 'Win a full package around the world',
'picture' => 'http://www.test.com/test',
'link' => 'http://test.test.com/test/'
));
echo 'Posted!';
} else {
die('Permissions required!');
}
} else {
# no active session, generate one
$login_url = $facebook->getLoginUrl();
header("Location: " . $login_url);
}
?>
您確實在代碼中創建了一個循環。 它說如果用戶有一個活動會話,請將其重定向到index.php。 從那里,他將被重定向到index.php等。
if (!empty($_SESSION)) {
header("Location: index.php");
}
我不確定您要使用此重定向做什么,但是肯定會導致循環。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.