몇 달 전에 고객의 블로그 페이지에서 문자열을 구문 분석하여 Facebook 벽에 주석으로 게시 할 작은 응용 프로그램을 작성했습니다. 관리 할 자격 증명이 있습니다.자동화 된 코멘트 Cron 작업이 더 이상 작동하지 않음 : 치명적 오류 : 잡히지 않음 OAuthException : 잘못된 서명
클라이언트는 한 번만 내 앱을 인증하고 지금은 "offline_access"권한을 통해 자신의 벽에 게시 할 수있었습니다.
이전 SDK 또는 최신 SDK를 사용하더라도 코드가 더 이상 작동하지 않습니다. 나는 아래 코드를 최신 버전의 SDK로 마이그레이션하고 인증을 처리하지 못하는 최신 프로토콜을 무용지물로 마이그레이션하려고 시도했다. 또한 클라이언트가 "manage_pages"범위 (1 일부터 제자리에 있었음)로 차이점없이 내 앱을 다시 인증하게했습니다.
내가 오류 내가 페이스 북의 문서 및 스택 오버플로의 지혜로운 현인 사이 원에 있었던 Fatal error: Uncaught OAuthException: Bad signature
만 내 지혜의 끝에서입니다. 내 문제는 "오래 지속되는"액세스 토큰을 생성 할 수 없다는 점에 있다고 생각하지만 클라이언트가 매번 페이스 북에 로그인하지 않고도이 작업을 수행 할 수 있어야합니다 (또는 전혀 문제가되지 않습니다) . 그렇다면 Facebook의 사용자 트위터 상태를 반영하는 다른 앱이 후속 사용자 로그인/인증없이 오프라인 게시를 처리하는 방법은 무엇입니까?
Facebook의 Graph API Explorer를 사용하면 코드가 작동하는 것으로 나타났습니다. 그러나 그것은 내가 대화를보기를 요구하고 이것은 나의 고객의 경우에는 효과가 없을 것이다. (로그인/다시는-인증은 몇 달 전에 필요하지 않았다.)
내가 답을 찾기 위해 노력하고 지난 일주일 동안 내 머리 밖으로 당겨되었고, 나는 빙빙 돌고 계속 :
https://developers.facebook.com/blog/post/2011/05/13/how-to--handle-expired-access-tokens
https://developers.facebook.com/roadmap/offline-access-removal
Facebook API: How to post to own application wall without login
... 몇 가지 예를 들자면 다음과 같습니다. 욕조에 갇힌 거미 같아.
누군가가 내 사례에 맞는 실제 코드 예제를 공유 할 수 있다면 대단히 감사하게 생각합니다. 감사합니다.
<?php
require_once 'facebook.php';
$facebook_access_token_url = "https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id=" . FACEBOOK_APP_ID . "&client_secret=" . FACEBOOK_APP_SECRET;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $facebook_access_token_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$facebook_access_token = curl_exec($ch);
curl_close($ch);
$config['appId'] = FACEBOOK_APP_ID;
$config['secret'] = FACEBOOK_APP_SECRET;
$config['fileUpload'] = false; // optional
$facebook = new Facebook($config);
$facebook->setAccessToken($facebook_access_token);
$page_id = FACEBOOK_APP_PAGE_ID;
$facebook_access_token = "";
$result = $facebook->api('/' . FACEBOOK_ACCOUNT_ADMIN_ID . '/accounts');
foreach($result['data'] as $page){
if($page['id'] == $page_id) {
$facebook_access_token = $page['access_token'];
break;
}
}
$facebook->setAccessToken($facebook_access_token);
$attachment = array(
'access_token' => $facebook_access_token,
'message' => 'Test message',
'scope' => 'manage_pages,publish_stream,publish_actions'
);
$result = $facebook->api('/' . $_GET['post_id'] . '/comments', 'post', $attachment);
?>
코드의 어느 지점에서 오류가 발생합니까? – CBroe