1

我想做的事:

每次向网站添加新内容时,在 Facebook 页面上发布帖子,无论我是否登录 Facebook。

现在有效:

在我自己的墙上发布帖子。

我为实现这一目标所做的工作:

  1. 我创建了一个应用程序
  2. 我已经
    按照 http://www.facebook.com/login.php?api_key=[my appId] &next=http://www.facebook.com/connect/login_success.html&req_perms=read_stream 为应用授予了所需的权限,发布流、管理页面、发布操作
  3. 接下来,我创建了一个脚本来发布内容,基本上就是这样:

    $appId='12822*****98');
    $secret='17c*****************320f');
    
    // on récupére l'instance de classe Facebook
    $facebook=new Facebook(array(
       'appId'  => $appId,
       'secret' => $secret
    ));
    
    // acquisition du token
    $url='https://graph.facebook.com/oauth/access_token?'.
        'client_id='.$appId.
        '&client_secret='.$secret.
        '&grant_type=client_credentials'.           '&scope=read_stream,publish_stream,publish_actions,manage_pages,offline_access'.
      '&state=dfgdfgdtgdgfdfg';
    $reponse = file_get_contents($url); 
    $tabReponse=explode('=',$reponse);
    $accessToken=$tabReponse[1];
    $facebook->setAccessToken($accessToken);
    
    $params = array(
        'message' => 'the message',
        'link' => 'http://www.myAppUrl.com'),
        'name'    => 'the name',
        'description' => 'some description',
    );
    
    try {                           
    // la cible
    $targetID='1471*********81';
    
    // publication
    $publishStream = $facebook->api("/$targetID/feed/", 'POST',     $params);           
    
    } catch (FacebookApiException $e) {
        $result = $e->getResult();
        print("Attention, la publication FB a échoué, veuillez vérifier les paramètres!");
    }
    

如果我打印在第一步传递的访问令牌,我会得到类似{appId}|***************************(27 个字符)的东西,我在这篇旧文章中读到的内容是某些操作的有效令牌,但不是全部。
有了这个,我可以在我的个人墙上发布,但不能在我管理的页面上发布,在最后一种情况下,我得到一个#200 error(关于尚未授权应用程序执行此操作的用户)。

如果我使用 Graph API Explorer 为我的应用程序生成访问令牌,我会得到一个表示访问令牌的长字符串,如果我在setAccessToken调用中使用它,我可以完全在页面上发布。因为我得到了一个#100 error(关于必须引用 Canvas URL 的链接,即使在应用程序设置中将“Stream post URL security:”设置为关闭)

有人知道如何实现我想要的吗?

我不想要任何 USER 连接,服务器必须请求凭据才能通过应用程序发布,而不是用户。

4

0 回答 0