0

我开发了一个应用程序,以便用户可以将图像上传到页面的相册。我不希望用户必须授权,因此我使用应用程序中的访问令牌为他们上传图像。如果管理员已登录并且访问令牌尚未过期,则此方法工作正常 - 它似乎只持续几个小时。我查看了 stackoverflow 和 facebook 并尝试了许多不同的东西,但似乎没有任何效果。这是我正在使用的一些代码:

try {
        $facebook->setAccessToken("APP_ACCESS_TOKEN_FROM_GRAPH_API_TOOL");
        $token_url="https://graph.facebook.com/oauth/access_token?client_id=APP_ID&client_secret=APP_SECRET&grant_type=fb_exchange_token&fb_exchange_token=".$facebook->getAccessToken();
        $page_id = 'PAGE_ID';
        $response = file_get_contents($token_url);
        $params = null;
        parse_str($response, $params);
        $page_info['access_token'] = $params['access_token'];
        $page_info = $facebook->api("/".$page_id."?fields=access_token");
        if( !empty($page_info['access_token']) ) {
            $photo_details['access_token'] = $page_info['access_token'];
            $upload_photo = $facebook->api('/'.$page_id.'/photos', 'post', $photo_details);

我在做梦吗?这可能吗,我只是搞砸了代码?即使只是为我指出正确的方向,任何帮助都将不胜感激......

4

1 回答 1

0

目前,您的代码使用您自己的访问令牌,而不是应用程序访问令牌。

要获取应用程序访问令牌,您需要向https://graph.facebook.com/oauth/access_token?client_id=APP_ID&client_secret=APP_SECRET&grant_type=client_credentials发出获取请求,如https://developers.facebook.com/docs中所述/technical-guides/opengraph/publishing-with-app-token/

在您的实现中,并假设 APP_SECRET 和 APP_ID 被定义为常量,您将通过以下方式获取应用访问令牌:

$appAccessToken = str_replace("access_token=","",$facebook->api("https://graph.facebook.com/oauth/access_token?client_id=APP_ID&client_secret=APP_SECRET&grant_type=client_credentials"));
$facebook->setAccessToken($appAccessToken);
于 2012-12-24T10:03:22.893 回答