0

私のアプリケーションで写真を公開したいのですが、ユーザーはすでに私のアプリをpublish_stream権限で登録しており、現在Facebookから切断されています。

ドキュメントhttps://developers.facebook.com/docs/publishing/は言った:

「写真」オブジェクトを公開するには、必要です

  • 有効なアクセストークン
  • publish_stream権限

HTTP POSTリクエストを試しました: https://graph.facebook.com/<USER_ID>/photos?access_token=<APPLICATION_ACCESS_TOKEN>
POST param : "url":"<link_to_some_picture>"

そして私は例外を得ました: content={"error":{"message":"A user access token is required to request this resource.","type":"OAuthException","code":102}}

ユーザーに代わって写真を公開するには、ユーザーアクセストークンを渡すことができません...リンクを投稿できますが、アプリケーションアクセストークンを使用して写真を投稿できないのはなぜですか?

4

3 に答える 3

0

ユーザーがアプリケーションを登録すると、そのアクセストークンを使用してユーザーに代わって投稿した後、ユーザーのユーザーアクセストークンを保存できます。ユーザーが次回アプリケーションにアクセスしたときに、そのアクセストークンを更新できます。次の関数を使用して、拡張アクセストークンを取得できます。

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'),
                $params = array(    'client_id' => $this->getAppId(),
                                    'client_secret' => $this->getApiSecret(),
                                    '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-07-18T07:43:43.600 に答える
0
$fid = $row[1];
        echo "fid = $fid\n";
        $message =$row[2];
        echo "msg = $message\n";
        $friends = $facebook->api("/$user/friends?fields=id");
        $args= array(

                'app_id' => $facebook->getAppId(),
                'to' => $fid,
                'link' => 'http://www.facebook.com',
                'message'=>$message,

        );
        $post_id = $facebook->api('/fid /feed', 'POST', $args);
        var_dump($post_id);
于 2012-07-25T12:48:30.667 に答える
0

タイトルには、アプリケーション アクセス トークンを使用していると記載されています。発生しているエラーは、問題を明確に示しています。ユーザー アクセス トークンが必要です。

ユーザーが Facebook に接続していないときにユーザーに代わってアクションを実行するには、ユーザー アクセス トークンを拡張する必要があります。

期限切れのトークンの処理とトークンの更新方法については、次のリソースを参照してください。

https://developers.facebook.com/docs/authentication/access-token-expiration/

于 2012-07-17T08:49:45.480 に答える