【问题标题】:Define token for single call without app id+secret with Facebook SDK 4, Graph API 2.X使用 Facebook SDK 4、Graph API 2.X 为没有应用 id+secret 的单个调用定义令牌
【发布时间】:2015-06-14 04:17:08
【问题描述】:

使用之前的图形 api 和 facebook 的 SDK,我可以将单个令牌定义为

'access_token => $token'

就是这样。

但现在,有了新的 SDK,我不知道该怎么做,甚至不知道是否可行。

这是我的新代码(不起作用):

<?php

require_once 'autoload.php';

use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookAuthorizationException;
use Facebook\GraphObject;
use Facebook\Entities\AccessToken;
use Facebook\HttpClients\FacebookCurlHttpClient;
use Facebook\HttpClients\FacebookHttpable;


$request = new FacebookRequest(
$session,
  'POST',
  '/post_id/comments',
  array (
'access_token' => 'CAALXXXXXXXXXXXXXXXXXXXXXXXXXX',
'message' => 'this is a test',
  )
);

?>

(当然,当我运行代码时,我正在更改访问令牌和帖子 ID 的值)

这是我以前有效的代码:

<?php

require_once('dir/src/facebook.php');


  $config = array(
    'fileUpload' => true,
    'allowSignedRequest' => false
  );

  $facebook = new Facebook($config);

$comment = $facebook->api('/post_id/comments', 'POST', array(
'access_token' => 'CASDASDASDASDASDASDSDSD',
'message' => 'this is a test message',
)
);


?>

显示的错误是:

可捕获的致命错误:传递给 Facebook\FacebookRequest::__construct() 的参数 1 必须是 Facebook\FacebookSession 的实例,给定字符串,在第 27 行的 /home//public_html/post_comment.php 中调用并在 /home 中定义/public_html/src/Facebook/FacebookRequest.php 在第 187 行

请帮助我了解如何使用单个令牌进行评论,而无需通过 facebook 的新 sdk 登录任何应用程序。

非常感谢。

【问题讨论】:

  • 你没有将$session设置为任何东西
  • 因为我不希望启动任何会话或对我的应用程序或其他东西进行任何授权。我想预先将“会话”或令牌定义为已经定义的东西,例如这个特定的令牌.
  • 然后从访问令牌创建$session。通过$session = new FacebookSession($accesstoken);
  • 我刚刚尝试了您的建议,但没有成功。我已经尝试了所有可能的方式。我将 $accesstoken 替换为 " " & ' ' 中的实际令牌,仍然无法正常工作。
  • 这很奇怪,因为在 facebook 的文档中,他们解释说要完全按照你告诉我的去做,但这仍然行不通。有没有什么方法可以使用 sdk 4 而不定义应用程序 ID 和应用程序秘密,只运行我的令牌?

标签: php facebook facebook-graph-api sdk


【解决方案1】:

首先设置一个新的 Facebook 应用程序which you can find here

按照提示保存 App ID 和 App Secret。

开始一个会话:

session_start();
FacebookSession::setDefaultApplication($app_id,$secret);
FacebookSession::enableAppSecretProof(false);

但是现在你想要一个访问令牌,所以让我们请求一个(这样我们就不必在每次过期时手动获取一个):

$session = FacebookSession::newAppSession();
$response = new FacebookRequest($session, 'GET', '/oauth/access_token?client_id='.($app_id.'&client_secret='.$secret.'&grant_type=client_credentials'))->execute();
$token = $response->getGraphObject()->asArray()['access_token'];

现在使用新的 $token 开始会话并提交请求:

$session = new FacebookSession($token);
$request = new FacebookRequest(
    $session,
    'GET',
    '/'.$post_id.'/comments'
);

【讨论】:

  • FacebookSession 类在 Facebook SDK 5 中不可用。
猜你喜欢
  • 1970-01-01
  • 2015-04-22
  • 1970-01-01
  • 2015-09-12
  • 2022-11-11
  • 2011-09-18
  • 1970-01-01
  • 2015-05-28
  • 2012-03-04
相关资源
最近更新 更多