我开发了一款应用,用户可以将图片上传到网页相册。我不希望用户必须进行授权,因此我使用应用程序中的访问令牌为他们上传图像。如果管理员已登录并且访问令牌尚未过期,则此方法可以正常工作 - 它似乎只能持续几个小时。我查看了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);
我在做梦吗?这是可能的,我只是搞砸了代码?任何帮助都会非常感激,甚至只是为了指出我正确的方向......
答案 0 :(得分:0)
目前,您的代码使用您自己的访问令牌,而不是App Access令牌。
要获取应用访问令牌,您需要按照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);