24

Facebook Graph API を使用して、Facebook からフォト アルバムを取得し、作業中の Web サイトに配置しようとしています。Codeigniter フレームワークで言語として PHP を使用しており、ユーザーのアクセス トークンを取得するために Facebook の URL にリダイレクトしています。Facebook からアクセス トークンが返されたので、それを取得してデータベースに挿入します。

そうは言っても、グラフの URL にアクセスしてフォト アルバムの JSON データを取得しようとすると、エラーが返されます。グラフの URL とエラーは次のとおりです。

https://graph.facebook.com/1298926000574/photos?access_token=[MY ACCESS TOKEN]

My access token: AQBxqdB64GHNTGY5Yp_IOuMY7NerwNtXVVrp2HwT1qXj02zqU-63KJDyB2jzqurlJ4M0vd7TAu7upA6T7ZYQzIChr2PgD1dpu-6Iebi0WVILbBSBOu-yj7sgcHSGS-Ew4Yio0I9In-1O5jOxbYLDMbI0Zmwk-F1-u-7a8iVvTJram8PvpmdRt5eg

Returned error:

{
"error": {
  "message": "Malformed access token [MY ACCESS TOKEN]",
  "type": "OAuthException",
  "code": 190
}
} 

なぜ Facebook がこのエラーを返し続けるのか、私にはよくわかりません。アクセストークンは非常に長いので、データベースに「テキスト」フィールドとして保存しています。私は彼らの指示に従いましたが、今、彼らは私の足を撃っています。どんな助けでも大歓迎です。

4

6 に答える 6

67

これと同じ問題があり、解決策を探しているこの投稿を見つけました。「私たちの」アクセストークンには多くの奇妙な記号があり、その他は単なる英数字の文字列であることに気付きました。

あなた (そして私) が犯した間違いは、コードaccess_tokenを混同したことだと思います

Facebook ユーザーを API に送信してアクセスを確認すると、$_GET['code']. このコードは、成功時にaccess_tokenを返す Facebook で確認する必要があります。

$app_id = [YOUR_APP_ID];
$app_secret = [YOUR_APP_SECRET];
$my_url = [THE_SAME_AS_THE_POST_BEFORE];
$code = $_GET['code'];

$token_url = "https://graph.facebook.com/oauth/access_token?"
. "client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url)
. "&client_secret=" . $app_secret . "&code=" . $code;

$response = file_get_contents($token_url);
$params = null;
json_decode($response, $params);
$access_token = $params['access_token'];

PHP で access_token を取得する方法の詳細

正しい redirect_uri の使用に関する詳細情報

于 2012-06-22T09:41:15.043 に答える
3

1つのwpプラグインが同じエラーを返していましたが、これが解決策でした。問題に関連している可能性があります。

PHPはaccess_tokenを要求し、Facebookサーバーはそれを返します。

access_tokenUSEDを含む返されるメッセージは次のようになります。

access_token=.......

ただし、新しく作成されたアプリケーション(2012)の場合、Facebookサーバーは次のように戻ります。

access_token=.....&expires=.....

コードがこれを誤って解析している場合、

$access_token=str_replace('access_token=','',$message);

次に、$ access_tokenに余分な&expiresなどが誤って含まれています。

次のように解析する必要があります。

parse_str($message,$ar); $access_token=$ar['access_token'];
于 2012-12-29T15:43:54.347 に答える
2

私も同じ問題を抱えていました。それがどのように機能するかを考えました。これは、同じ泥に沈んでいる人のためのものです.

require 'facebook-php-sdk/facebook.php';
$facebook = new Facebook(array(
  'appId'  => 'APP ID',
  'secret' => 'SECRET KEY',
));

// Get User ID
$user = $facebook->getUser();  
if ($user) {
    $accessToken = $facebook->getAccessToken();
        try {
            $url = "https://graph.facebook.com/1298926000574/photos?access_token=".$accessToken;

            $photos = $facebook->api($url);
            var_dump($photos);
        } catch (FacebookApiException $e) {
            $user = null;
        }
    }   
} else {
    //echo "You need to login";
    header("Location:".$facebook->getLoginUrl());
}
于 2012-10-23T05:00:51.237 に答える
1

tl;dr

アクセス トークンは、アプリ ID とアクセス トークンをパイプ ( |) 文字で区切って構成する必要があります123456789012345|AbCDefGHijKLMNOpqRSTUVwxYZ

アクセス トークンの作成と使用

注:このチュートリアルでは、ダミーの資格情報のみを使用します。それらは実際のものと同じスタイルになりますが、正確な値は一連のインクリメントされた数字または文字です。実際の資格情報をオンラインで投稿しないでください。

アクセストークンの作成

要件:

  • アプリ ID:123456789012345
  • アプリの秘密:ZYxwVUTSRqpONMLKjiHGfeDCbA

アクセス トークン作成ガイドに従うと、作成できる次のURL が見つかります。

GET /oauth/access_token?client_id={app-id}&client_secret={app-secret}&grant_type=client_credentials

ダミーの認証情報を挿入すると、GET リクエストの URI は次のようになります。

 http://graph.facebook.com/oauth/access_token?client_id=123456789012345&client_secret=ZYxwVUTSRqpONMLKjiHGfeDCbA&grant_type=client_credentials

応答は次のようになります。

{
  "access_token": "123456789012345|AbCDefGHijKLMNOpqRSTUVwxYZ",
  "token_type": "bearer"
}

アクセス トークンは、アプリ ID、パイプ ( |)、実際のアクセス トークンと呼ばれる文字列で構成されます。

アクセストークンの使用

要件:

  • アクセストークン:123456789012345|AbCDefGHijKLMNOpqRSTUVwxYZ
  • 必要なその他の資格情報。この例のユーザー ID:1234567890

この例では、通知の送信に関する Facebook の公式ガイドに従います。彼らはこのテンプレートを示しました:

POST /{recipient_userid}/notifications?access_token=... &template=...&href=...

つまり、資格情報を入力すると、POST リクエストの例は次のようになります。

http://graph.facebook.com/1234567890/notifications?access_token=123456789012345|AbCDefGHijKLMNOpqRSTUVwxYZ&template=Test&ref=notif_test
于 2018-02-16T17:22:26.840 に答える
-1

エラーが言うように、それは不正な形式の例外であり、フォーマットのエラーを意味しますrequest.

https://graph.facebook.com/me/photos/?access_token=[your_accesstoken]

だからそれは次のようになります

https://graph.facebook.com/me/photos/?access_token=AQBxqdB64GHNTGY5Yp_IOuMY7NerwNtXVVrp2HwT1qXj02zqU-63KJDyB2jzqurlJ4M0vd7TAu7upA6T7ZYQzIChr2PgD1dpu-6Iebi0WVILbBSBOu-yj7sgcHSGS-Ew4Yio0I9In-1O5jOxbYLDMbI0Zmwk-F1-u-7a8iVvTJram8PvpmdRt5eg
于 2013-02-27T19:43:36.937 に答える