Facebook graph api Facebook访问令牌过期,导致我的应用无法运行

Facebook graph api Facebook访问令牌过期,导致我的应用无法运行,facebook-graph-api,facebook-php-sdk,Facebook Graph Api,Facebook Php Sdk,我开发了一个应用程序,用户可以将图像上传到页面的相册中。我不希望用户必须授权,因此我使用应用程序中的访问令牌为他们上传图像。如果管理员已经登录,并且访问令牌还没有过期,那么这个方法就可以正常工作——它似乎只持续几个小时。我浏览了stackoverflow和facebook,尝试了许多不同的方法,但似乎都没有效果。以下是我正在使用的一些代码: try { $facebook->setAccessToken("APP_ACCESS_TOKEN_FROM_GRAPH_API_TO

我开发了一个应用程序,用户可以将图像上传到页面的相册中。我不希望用户必须授权,因此我使用应用程序中的访问令牌为他们上传图像。如果管理员已经登录,并且访问令牌还没有过期,那么这个方法就可以正常工作——它似乎只持续几个小时。我浏览了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);

我在做梦吗?这可能吗?我把密码搞错了?任何帮助都将不胜感激,即使只是给我指出正确的方向…

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

要获取应用程序访问令牌,您需要向发出get请求,如中所述

在您的实现中,假设APP_SECRET和APP_ID被定义为常量,您可以通过以下方式获得APP访问令牌:

$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);

您是如何登录页面管理的?您使用的是客户端还是服务器端Oauth流?当您为管理员使用服务器端流为他们获取60天令牌,然后使用
/accounts
端点获取页面访问令牌时,页面访问令牌应该是无限的。我正在使用PHPSDK,所以我将使用服务器端。。。目前,除了try之后看到的前两行之外,没有oauth流{.setAccessToken从admin/app获取access_令牌,并在紧接着的第行上的graph api调用中使用它。如果使用服务器端流,则为页面管理员获取的令牌应为60天,从
//accounts
检索的页面访问令牌应为无限-如果这不起作用,请尝试卸载强制安装应用程序(
/me/permissions?method=delete&access\u token=XXX
),然后重新安装,看看它是否能正常工作。我在[link][1]上找到了感谢如何将应用程序\u ACCESS\u TOKEN\u从\u GRAPH\u API\u工具变成60天访问令牌,现在管理员不需要登录,访问令牌也不会过期。我祈祷它继续以这种方式工作![1]: