3.0之後的版本要把原有的權限判斷 "req_perms" 更改為 "scope"
Facebook api 權限控制
步驟一、下載PHP SDK
網址: https://github.com/facebook/php-sdk/
下載下來解壓縮後可以看到以下幾個資料夾,examples、src、tests
您可以直接修改範例裡頭的檔案,只要更改應用程式ID、API金匙
還有應用程式密匙,也就是上一篇建立完成後所產生的(不懂的話看上一篇)
在此不介紹範例的程式,筆者這裡有用過,一開始還正常,之後就發生了錯誤
出處(感謝各位作者):
http://thinkdiff.net/facebook/php-sdk-graph-api-base-facebook-connect-tutorial/
這位作者寫的很好~假如看不懂英文,底下是我中文說明,以及修改的程式
步驟二、建立連線
程式碼如下,都有打上註解(複製貼上吧)
步驟三、取得使用者資訊
增加FQL,取得使用者所加入的粉絲資訊、取得使用者所加入的粉絲資訊、應用程式留言的資訊
如下程式碼
※ 請到官方網站 重新下載新的 Facebook PHP SDK ※
還是看不懂嗎…….
懶人包直接 下載 ,改一下應用程式ID、金匙、應用程式密匙
Facebook api 權限控制
步驟一、下載PHP SDK
網址: https://github.com/facebook/php-sdk/
下載下來解壓縮後可以看到以下幾個資料夾,examples、src、tests
您可以直接修改範例裡頭的檔案,只要更改應用程式ID、API金匙
還有應用程式密匙,也就是上一篇建立完成後所產生的(不懂的話看上一篇)
在此不介紹範例的程式,筆者這裡有用過,一開始還正常,之後就發生了錯誤
Uncaught OAuthException: Error validating access token. thrown
所以底下是我尋找各種方案後所找到比較可靠的範例。出處(感謝各位作者):
http://thinkdiff.net/facebook/php-sdk-graph-api-base-facebook-connect-tutorial/
這位作者寫的很好~假如看不懂英文,底下是我中文說明,以及修改的程式
步驟二、建立連線
程式碼如下,都有打上註解(複製貼上吧)
<?php
$fbconfig['appid'] = "";
$fbconfig['secret'] = "";
try {
include_once "src/facebook.php";
} catch (Exception $o) {
echo '<pre>';
print_r($o);
echo '</pre>';
}
function p($d) {
echo '<pre>';
print_r($d);
echo '</pre>';
}
$facebook = new Facebook(array(
'appId' => $fbconfig['appid'],
'secret' => $fbconfig['secret']
));
$uid = $facebook->getUser();
$login_url = $facebook->getLoginUrl//登入連結以及要取得使用者哪些資訊
(
array
(
"scope" => "id,link,username,birthday,email,user_photos", //要取得的使用者資訊
'next' => 'http://apps.facebook.com/wingnetgraphapi/', //按下完成後轉向網址
'redirect_uri' => 'http://apps.facebook.com/wingnetgraphapi/', //下一頁轉向網址
'fbconnect' => 1,
'canvas' => 1, //Facebook內的畫布,沒有用到,為0
)
);
if (!$uid) {
echo "<script type='text/javascript'>top.location.href = '" . $login_url . "';</script>";
exit;
}
?>
步驟三、取得使用者資訊
增加FQL,取得使用者所加入的粉絲資訊、取得使用者所加入的粉絲資訊、應用程式留言的資訊
如下程式碼
<?php
include_once "fbinclude.php";
if ($uid) {
$fbme = $facebook->api('/me');
//使用SDK函式提供的方法(users.getinfo)取得使用者資訊
try {
$param = array(
'method' => 'users.getinfo',
'uids' => $uid,
'fields' => 'name,current_location,profile_url',
'callback' => ''
);
$userInfo = $facebook->api($param);
} catch (Exception $o) {
p($o);
}
//使用FQL取得使用者資訊
try {
//get user id
$uid = $facebook->getUser();
//or you can use $uid = $fbme['id'];
$fql = "select uid,name,profile_url, hometown_location, sex, pic_square from user where uid=" . $uid;
$param = array(
'method' => 'fql.query',
'query' => $fql,
'callback' => ''
);
$fqlResult = $facebook->api($param);
} catch (Exception $o) {
p($o);
}
try {
//get user id
$uid = $facebook->getUser();
//or you can use $uid = $fbme['id'];
$fqlfans = "SELECT page_id, name, type,pic FROM page WHERE page_id IN (SELECT page_id FROM page_fan WHERE uid=" . $uid . ")";
$fans = array(
'method' => 'fql.query',
'query' => $fqlfans,
'callback' => ''
);
$fansResult = $facebook->api($fans);
} catch (Exception $o) {
p($o);
}
//判斷使用者是否有加入粉絲專頁
try {
//get user id
$uid = $facebook->getUser();
$pageID = '261910770463';
//or you can use $uid = $fbme['id'];
$fans = "SELECT target_id,target_type,source_id,is_following,updated_time,is_deleted FROM connection WHERE source_id = $uid AND target_id = $pageID";
$fansteam = array(
'method' => 'fql.query',
'query' => $fans,
'callback' => ''
);
$fansteamResult = $facebook->api($fansteam);
} catch (Exception $o) {
p($o);
}
//END 判斷使用者是否有加入粉絲專頁
//取得在此應用程式留言的使用者(以官方的文件為例)
try {
$comment = "select fromid, object_id, text, time from comment where object_id in (select post_fbid from comment where object_id in (select comments_fbid from link_stat where url ='http://developers.facebook.com/docs/reference/fql/comment/'))";
$comments = array(
'method' => 'fql.query',
'query' => $comment,
'callback' => ''
);
$commentResult = $facebook->api($comments);
} catch (Exception $o) {
p($o);
}
//END 取得在此應用程式留言的使用者
/* try {
//get user id
$uid = $facebook->getUser();
//or you can use $uid = $fbme['id'];
// $fqlphotos="SELECT pid,src_big,link FROM photo WHERE aid IN ( SELECT aid FROM album WHERE owner='20531316728' ) ORDER BY created DESC LIMIT 1,42";
$fqlphotos = "SELECT aid, owner, name, object_id,link FROM album WHERE aid='100002637024906_12582'";//取得相簿 owner
$photos = array(
'method' => 'fql.query',
'query' => $fqlphotos,
'callback' => ''
);
$photosResult = $facebook->api($photos);
} catch (Exception $o) {
p($o);
} */
}
?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml">
<!-- 標籤裡頭 要加入xmlns:fb="http://www.facebook.com/2008/fbml" -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<script type="text/javascript" src="http://connect.facebook.net/zh_TW/all.js"></script>
<!--載入FBJS SDK -->
</head>
<body>
<div id="fb-root"></div>
<script type="text/javascript">
window.fbAsyncInit = function() {
FB.init({appId: '<?= $fbconfig['appid'] ?>', status: true, cookie: true, xfbml: true});
};
(function() {
var e = document.createElement('script');
e.type = 'text/javascript';
e.src = document.location.protocol +
'//connect.facebook.net/zh_TW/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
}());
</script>
<fb:login-button autologoutlink="true" perms="email,user_birthday,status_update,publish_stream"></fb:login-button>
<table border="0" cellspacing="3" cellpadding="3">
<tr>
<td>
<!-- Data retrived from user profile are shown here -->
<div class="box">
<b>FacebookApp(PHP SDK V3.0.0)</b>
</div>
</td>
</tr>
<tr>
<td>
<!-- Data retrived from user profile are shown here -->
<div class="box">
<b>API取得的使用者資訊"api(/me)"</b>
<?php p($fbme); ?>
</div>
</td>
</tr>
<tr>
<td>
<div class="box">
<b>使用API方法取得使用者資訊 "users.getinfo"</b>
<?php p($userInfo); ?>
</div>
</td>
</tr>
<tr>
<td>
<div class="box">
<b>呼叫 API FQL的方法取得使用者資訊 "fql.query"</b>
<?php p($fqlResult); ?>
</div>
</td>
</tr>
<tr>
<td>
<div class="box">
<b>呼叫 API FQL的方法取得使用者所加入的粉絲資訊</b>
<?php
p($fansResult);
?>
</div>
</td>
</tr>
<tr>
<td>
<div class="box">
<b>呼叫 API FQL的方法取得使用者所加入的粉絲資訊</b>
<?php
p($fansteamResult);
?>
</div>
</td>
</tr>
<tr>
<td>
<div class="box">
<b>呼叫 API FQL的方法取得在應用程式留言的資訊</b>
<?php
p($commentResult);
?>
</div>
</td>
</tr>
</table>
</body>
</html>
※ 請到官方網站 重新下載新的 Facebook PHP SDK ※
還是看不懂嗎…….
懶人包直接 下載 ,改一下應用程式ID、金匙、應用程式密匙
4 則留言:
不能下載耶。
您的 GOOGLE 空間出問題。
能寄給我嗎?
chnamis98@gmail.com
HI 你好
進入google空間後,點選左上角"檔案"便可看到下載的字樣,點選項下載就可以下載囉 目前版本臉書已更新在SDK 3.1.1
這邊有空整理好後再放上,使用上有什麼問題,不訪提出來討論吧
你好,我已經按照你的方式改成自已app的id、金鑰,可是我在執行網址的時候,如同你的https://apps.facebook.com/我的網址/
canvas無法跑出如同你的連結,而只是一個錯誤頁面,請問是否在設定上還有什麼要注意的嗎?
回 這城市,天空下>>
1.或許SDK為舊版 請去FB官方下載新的
(https://developers.facebook.com/docs/reference/php/4.0.0) ,把src裡頭檔案更新
2.設定沙盒模式 是否有關閉
3.連結網址是否有錯誤
張貼留言