2014-07-08 22 views
-1

我一直在试图找到一种方法来添加页面标签在Facebook使用PHP SDK没有用。facebook使用php添加页面选项卡?

我搜索了几乎整个谷歌,stackoverfllow和facebook开发人员部分。

甚至没有让我开始与Facebook开发人员部分,因为它是人类最糟糕的书面文件(如果它是由人写的)。

任何其他我发现这是基本使用URL在浏览器中,像这样:

https://www.facebook.com/dialog/pagetab?app_id={YOUR_APP_ID}&redirect_uri=https://facebook.com 

这不是我想要的,什么是最简单的方式。

我需要知道,我如何使用PHP SDK来达到同样的效果。

我已经开发了一个应用程序,我也可以使用PHP SDK manage_pages,我可以得到PAGE_ID用户。如果用户允许管理页面,我可以简单地在我的php页面上回显page_id输入域

现在,我需要知道如何在我的php页面中使用该选定页面(page_id)在该页面中创建/添加PAGE TAB。

有人能请我指出一个正确的方向吗?

在此先感谢。

我也尝试下面的代码,我虽然会工作,我得到的是空白页:

<?php 

require 'facebook.php'; 


$facebook->api('/I WILL PUT MY PAGE ID THERE/tabs', 'POST', array(
    'app_id'=>'MY APP ID GOES THERE', 
    'access_token'=>'MY ACCESS TOKEN GOES THERE' 
)); 
/* handle the result */ 

?> 

编辑:

这是绝对不会从Facebook开发人员部分所采取的代码什么:

PHP:

<?php 

if (isset($_POST['txtName'])) { 

$request = new FacebookRequest(
    $session, 
    'POST', 
    '/236482648726347826/tabs', 
    array (
    'app_id' => '64564564645645646456', 
) 
); 
$response = $request->execute(); 
$graphObject = $response->getGraphObject(); 

} 
?> 

HTML部分:

<form id="form" name="form" method="post" action="index"> 
<input id="text" name="txtName"> 
</form> 

是不是假设打开一个ADD PAGE TAB对话框,或者在最坏的情况下在场景后面添加页面标签?

目前上面的代码在表单提交后生成一个空白页面。

第二个编辑:

这是我的全码:

指数。PHP代码:

<?php 
    include_once("config.php"); 
    if ($fbuser) { 
     try { 
      $user_profile = $facebook->api('/me/accounts'); 
      //Get user pages details using Facebook Query Language (FQL) 
      $fql_query = 'SELECT page_id, name, page_url FROM page WHERE page_id IN (SELECT page_id FROM page_admin WHERE uid='.$fbuser.')'; 



      $postResults = $facebook->api(array('method' => 'fql.query', 'query' => $fql_query)); 
     } catch (FacebookApiException $e) { 
      echo $e->getMessage(); 
      $fbuser = null; 
     } 
    }else{ 
      //Show login button for guest users 
      $loginUrl = $facebook->getLoginUrl(array('redirect_uri'=>$homeurl,'scope'=>$fbPermissions)); 
      echo '<a href="'.$loginUrl.'"><img src="images/facebook-login.png" border="0"></a>'; 
      $fbuser = null; 
    } 

    if($fbuser && empty($postResults)) 
    { 
      /* 
      if user is logged in but FQL is not returning any pages, we need to make sure user does have a page 
      OR "manage_pages" permissions isn't granted yet by the user. 
      Let's give user an option to grant application permission again. 
      */ 
      $loginUrl = $facebook->getLoginUrl(array('redirect_uri'=>$homeurl,'scope'=>$fbPermissions)); 
      echo '<br />Could not get your page details!'; 
      echo '<br /><a href="'.$loginUrl.'">Click here to try again!</a>'; 

    }elseif($fbuser && !empty($postResults)){ 

    //Everything looks good, show message form. 
    ?> 

    <?php 

    //echo $access_token; 

    if (isset($_POST['txtName'])) { 

    $facebook->api('/MY PAGE ID/tabs', 'POST', array(
     'app_id'=>'MY APP ID', 
     'access_token'=>$access_token 
    )); 


    } 
    ?> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Post to user Page Wall</title> 
<link href="style.css" rel="stylesheet" type="text/css" /> 
<script src="jquery.min.js"></script> 

</head> 
<body> 

<div class="fbpagewrapper"> 
<div id="fbpageform" class="pageform"> 
<form id="form" name="form" method="post" action="index"> 
<h1>Post to Facebook Page Wall</h1> 
<p>Choose a page to post. <?php 
/* 
Get Log out URL 
Due to some bug or whatever, SDK still thinks user is logged in even 
after user logs out. To deal with it, user is redirected to another page "logged-out.php" after logout 
it is working fine for me with this trick. Hope it works for you too. 
*/ 
$logOutUrl = $facebook->getLogoutUrl(array('next'=>$homeurl.'logged-out.php')); 
echo '<a href="'.$logOutUrl.'">Log Out</a>'; 
?> 
</p> 
<label>Pages 
<span class="small">Select a Page</span> 
</label> 
<select name="userpages" id="upages"> 
    <?php 
    foreach ($postResults as $postResult) { 
      echo '<option value="'.$postResult["page_id"].'">'.$postResult["name"].'</option>'; 
     } 

    ?> 
</select> 

<input id="text" name="txtName"> 
<!--<label>Message 
<span class="small">Write something to post!</span> 
</label> 
<textarea name="message"></textarea>--> 
<button type="submit" class="button" id="submit_button">Send Message</button> 
<div class="spacer"></div> 
</form> 
</div> 
</div> 
</body> 
</html> 
<?php 
} 
?> 


<script> 
$('#upages').bind('change click keyup', function() { 
    $('#text').val($(this).val()); 
}); 
</script> 
</body> 
</html> 

配置文件:

<?php 
include_once("inc/facebook.php"); //include facebook SDK 

######### edit details ########## 
$appId = 'MY APP ID'; //Facebook App ID 
$appSecret = 'MY APP SECRET NUMBER'; // Facebook App Secret 
$return_url = 'https://MYDOMAIN.COM/'; //return url (url to script) 
$homeurl = 'https://MYDOMIAN.COM'; //return to home 
$fbPermissions = 'publish_stream,manage_pages'; //Required facebook permissions 
################################## 

//Call Facebook API 
$facebook = new Facebook(array(
    'appId' => $appId, 
    'secret' => $appSecret 
)); 

$fbuser = $facebook->getUser(); 
$access_token = $facebook->getAccessToken(); 
?> 

正如你所看到的,我得到的访问令牌在我的配置文件像这样:$access_token = $facebook->getAccessToken();

当我从用户获得管理页面权限后,在我的页面上回显$ access_token后,我在页面上显示一个长号码。

所以,我试图用令牌像这样:

<?php 

//echo $access_token; 

if (isset($_POST['txtName'])) { 

$facebook->api('/MY PAGE ID/tabs', 'POST', array(
    'app_id'=>'MY APP ID', 
    'access_token'=>$access_token 
)); 


} 
?> 

但是当我提交表单,我没有得到任何“添加网页对话框”我的网页上。

这是我的问题。现在有人可以帮助我,因为我在过去的4天里完全输了。

感谢

回答

0
+0

看,我已经说过,我得到的页面ID,我可以在inputfield呼应它。这意味着我需要获得用户的许可才能做到这一点,这也意味着访问令牌已经在用户获得许可后发布。 – user3806613

+0

是的,我成功阅读了!我写道,你必须使用** Page Acess Token **才能做到这一点,而不是用户访问令牌。我真的不明白你的问题在哪里?这在我链接的文档中有明确说明,而您似乎已经拥有Page ID和适当的权限。就像我写的,你需要首先通过'/ me/accounts'获得页面访问令牌! – Tobi

+0

我一直在阅读Facebook的文档约3天,没有运气了解任何它!无论我迄今为止学到的是从我自己的试验和错误或谷歌搜索... Facebook的文档不清楚。这就是为什么我认为我可以从这里能够说人类语言而不是Facebook语言的人那里获得帮助。 (没有恶意)。附:我发现你约2天前发布的链接。 – user3806613

相关问题