aykut/simplefacebook

Facebook SDK 的简单 PHP 包装器

dev-master 2016-03-07 12:50 UTC

This package is not auto-updated.

Last update: 2024-09-28 13:37:13 UTC


README

简单 Facebook PHP SDK 包装器

这是一个 Facebook PHP SDK 的包装器。您可以使用这个有用的库轻松编写 Facebook 画布或标签应用程序。

Build Status

安装

您可以使用 Composer 安装 SimpleFacebook。

{
    "require": {
        "aykut/simplefacebook": "*"
    },
    "minimum-stability": "dev"
}

基本用法

<?php 

// create Facebook sdk object
$facebookSDK = new Facebook(array(
    'appId'  => 'APP_ID',
    'secret' => 'APP_SECRET'
));

// redirect and permission config (optional)
$config = array(
    'redirect_uri' => 'REDIRECT_URI',
    'scope' => 'APP_PERMISSIONS' // (comma-separated list)
);

$fb = new SimpleFacebook($facebookSDK, $config);

// Check user login
if (!$fb->isLogged()) {

    printf('<a href="%s" target="_top">Login with Facebook</a>', $fb->getLoginUrl());

} else {
    echo 'Facebook user id: ' . $fb->getId();
}

文档

目录

扩展访问令牌

移除 offline_access 权限之后,您需要调用 graph api 获取扩展访问令牌。

<?php 

$token = $fb->getExtendedAccessToken();
echo "Extented access token: {$token} <br>";

// with expire time
$tokenData = $fb->getExtendedAccessToken(true);
$token = $tokenData['access_token'];
$tokenExpires = time() + $tokenData['expires'];

echo "Extented access token: {$token} (Expires at {$tokenExpires})";

朋友

<?php 

$friends = $fb->getFriends();

foreach ($friends as $friend) {
    echo "Name: {$friend["name"]} ID: {$friend['id']} <br>";
}

// or just ids
$friendIds = $fb->getFriendIds();

获取使用此应用程序的用户的朋友。

<?php 

$friends = $fb->getAppUserFriends();

foreach ($friends as $friend) {
    echo "Name: {$friend["name"]} Facebook ID: {$friend['uid']} <br>";
}

// or just ids
$friendIds = $fb->getAppUserFriendIds();

权限

<?php 

// get given permissions array
$perms = $fb->getGivenPermissions();

// check if a permission given
if ($fb->isPermGiven('read_stream')) {
    // now you can get user's news feed items
    $data = $fb->api('/me/home');
    // ..
}

// check multiple permissions
if ($fb->isPermGiven('read_stream,read_mailbox,user_likes')) {
    // ..
}

请求

如果您使用的是 Requests 对话框,必须在它被接受后删除请求。清理它们的责任在于开发者。

<?php 

// get request ids after delete
$requestIds = $fb->getRequestIdsAfterDelete();

if (!empty($requestIds)) {

    foreach ($requestIds as $requestData) {

        $data = explode('_', $requestData);
        $requestId = $data[0];
        $userFbUid = $data[1];
        
        // your turn..
    }
}

页面标签应用程序

如果它是一个标签应用程序,您可能希望在用户使用应用程序之前让他们点赞页面。

<?php 

if (!$fb->isTabPageLiked()) {
    
    echo 'Like our page before using app';
    
} else {
    // ..
}

获取标签页的信息。

<?php 

// ...?sk=app_YOUR_APP_ID&app_data=YOUR_APP_DATA
$appData = $fb->getTabAppData();

// tab page id
$pageId  = $fb->getTabPageId();

发布 Open Graph 动作

<?php 

$responseId = $fb->publishOpenGraphAction('YOUR_APP_NAMESPACE', 'ACTION_NAME', array(
    'OBJECT_TYPE' => 'OBJECT_URL'
));

实时更新

实时更新 允许您的应用程序订阅 Facebook 中的数据变化。

<?php 

$object      = 'OBJECT'; // user, permissions or page
$fields      = 'FIELDS'; // friends, checkins, likes etc.
$callbackUrl = 'YOUR_CALLBACK_URL';
$verifyToken = 'YOUR_SECRET_VERIFY_TOKEN';

// subscribe to real-time updates
$fb->subscribe($object, $fields, $callbackUrl, $verifyToken);

// get list of subscripted updates
$subscriptions = $fb->getSubscriptions();

// unsubscribe from all subscripted objects
$fb->unsubscribe();

// unsubscribe from a specific subscripted object
$fb->unsubscribe('user');

这是回调 URL 部分。

<?php 
// returns challenge parameter for subscription verification of your callback url
echo SimpleFacebook::getSubscriptionChallenge($verifyToken);

// get subscripted updates
$updates = SimpleFacebook::getSubscriptedUpdates();

if (!empty($updates)) {
    // there is a update!
}

发送通知

使用 通知 API,您可以向应用程序用户轻松发送通知。

<?php

$userId   = 'USER_FACEBOOK_ID';
$template = 'NOTIFICATION_TEXT';
$href     = 'RETURN_HREF'; // index.html?gift_id=123

$response = $fb->sendNotification($userId, $template, $href);

运行 FQL 查询

<?php 

// Get page fan count with running fql query
$query = "SELECT name, fan_count FROM page WHERE page_id = 40796308305";
$data  = $fb->runFQL($query);

echo 'Fan count: ' . $data[0]['fan_count'];

检查页面点赞

<?php 

if ($fb->isLogged() && $fb->isPageLiked('PAGE_ID')) {

    echo "Liked";

} else {
    echo "Didn't like";
}

发布到墙

<?php 

// Post data
$postData = array(
    'message'     => 'Feed message',
    'picture'     => 'Address of image', 
    'link'        => 'URL',
    'name'        => 'URL title',
    'caption'     => 'Caption (under the URL title)',
    'description' => 'Description',
    'actions'     => array('name' => 'Action name', 'link' => 'Action link')
);

$postId = $fb->postToWall($postData);

创建事件

<?php 

// Event data
$eventData = array(
    'name'        => 'Event Title',
    'description' => 'Event description',
    'start_time'  => gmmktime(22,0,0,7,23,2012),
    'end_time'    => gmmktime(5,0,0,7,24,2012),
    'location'    => 'Event location',
    'privacy'     => 'OPEN'
);

$eventId = $fb->createEvent($eventData);

强制用户登录

如果您没有应用程序登录页面或希望在用户验证后使用应用程序,请在初始化 SimpleFacebook 后使用 forceToLogin

应用程序访问令牌

使用 getApplicationAccessToken 方法获取您的应用程序访问令牌。有关应用程序访问令牌的更多信息,请阅读 使用 App Access Tokens

许可证

(MIT 许可证)

版权所有 (c) 2012 Aykut Farsak (aykutfarsak@gmail.com)

本许可证授予任何获取此软件及其相关文档副本(“软件”)的人,在不受限制的情况下处理该软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许获得软件的人这样做,前提是遵守以下条件

上述版权声明和本许可证声明应包含在软件的所有副本或主要部分中。

本软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于对适销性、特定用途适用性和非侵权的保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论此类责任是基于合同、侵权或其他原因,无论此类责任是否与软件或其使用或其他方式有关。