如何通过CURL将图像发布到Facebook页面的相册以及获取新的页面访问令牌?

时间:2017-07-04 10:31:26

标签: php facebook facebook-graph-api curl facebook-access-token

目前,我有一个网站,允许用户上传图像,同时我希望所有这些上传的图像自动发布到Facebook页面的相册。我在下面使用了这个CURL代码:

    $args = array(
       'message' => $imageDescription,
        'access_token'=>$accesstoken,
        'url' => $img
    );

    $ch = curl_init();
    $url = 'https://graph.facebook.com/' . $albumid . '/photos';
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $args);
    curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);

    $data = curl_exec($ch);

    $response = json_decode($data,true);

从我的测试中,这段代码可以工作,但只有一个小时,因为我使用了从Graph API生成的访问令牌。这个到期时间在https://developers.facebook.com/docs/pages/access-tokens#expire中提到。

我一直在寻找Stack Overflow,大多数问题和答案都提到了使用app ID和app secret生成新令牌,但这是一个页面,而不是一个应用 。没有应用程序ID和应用程序密码,所以我被困住了。

所以在这种情况下,我该怎么办?或者在这种情况下是否无法使用CURL?

1 个答案:

答案 0 :(得分:2)

在这种情况下,应用程序不是指游戏之类的东西,而是指API应用程序。这对于使用OAuth对用户进行身份验证的API很常见。您为帐户创建了一个应用程序,它允许您以访问它的用户身份使用您的用户帐户访问Facebook API。

以下文章解释了整个事情,甚至还有关于facebook API如何运作的信息https://stormpath.com/blog/what-the-heck-is-oauth