0

現在、60 日間の access_token に問題があります。/me/applications からファンサイトの access_token を取得し、2 時間ごとにサイトを更新することなく、ファンサイトに投稿したいと考えています。

Facebookが提供する方法でファンサイトのトークンを解析しているときに、エラーがスローされます。

ログインは Javascript を介して処理され、PHP SDK を使用してバックグラウンドで処理されます。

こんにちは、モーリッツ

編集:

{"error_code":1,"error_msg":"An unknown error occurred"}エラーです。

コードはこれです:

$attachment = array('message' => $post['title'],
                        'link' => $unique,
                        'actions' => '{"name": "Fanseiten Admin?", "link": "http://google.com"}',
                        'access_token' => $page['access_token']);
$result = $facebook->api('/'.$page['pageid'].'/feed', 'post', $attachment);

データベースに格納されたアクセス トークンを使用してサイトにプッシュするだけです。

4

1 に答える 1

3

私は解決策を見つけました:base_facebook.phpクラスを次のように拡張して呼び出します

$facebook->setAccessToken($facebook->getExtendedAccessToken());

アプリのaccess_tokenも60日間に延長されました。

public function getExtendedAccessToken(){

    try {
        // need to circumvent json_decode by calling _oauthRequest
        // directly, since response isn't JSON format.
        $access_token_response =
            $this->_oauthRequest(
                $this->getUrl('graph', '/oauth/access_token'), array(
                    'client_id' => $this->getAppId(),
                    'client_secret' => $this->getAppSecret(),
                    'grant_type'=>'fb_exchange_token',
                    'fb_exchange_token'=>$this->getAccessToken()
                )
            );
    } catch (FacebookApiException $e) {
        // most likely that user very recently revoked authorization.
        // In any event, we don't have an access token, so say so.
        return false;
    }

    if (empty($access_token_response)) {
        return false;
    }

    $response_params = array();
    parse_str($access_token_response, $response_params);
    if (!isset($response_params['access_token'])) {
        return false;
    }

    return $response_params['access_token'];
}
于 2012-04-23T20:18:18.863 に答える