0

I'm following the steps very well described here https://stackoverflow.com/a/18399927/2510225 , but, from my server, I receive the following error:

{"error":{"message":"The access token does not belong to application APP-ID","type":"OAuthException","code":1}}

I can't figure what I'm doing wrong. Anyone knows if the process to get a permanent access token has changed, or is having the same issue?

The access token I'm using in the request is the user access token, which I think is correct.

In other words, I'm using this:

GET /oauth/access_token?  
    grant_type=fb_exchange_token&           
    client_id={app-id}&
    client_secret={app-secret}&
    fb_exchange_token={short-lived-token}

With the app_id and app_secret of the app I want to publish on a page and the short-lived-token of the user that have created the app. Is that the right way?

Edition (Image to complement answer from @Sahil Mittal) That's where I'm taking the API_ID (red arrow). That's correct, right? enter image description here

4

2 に答える 2

1

わかりました、それが私がこれを解決した方法であり、[ここ][1]で与えられた両方のソリューションをいくつかの試行で組み合わせます。:

1) アプリをページに関連付ける (おそらく行われた)

http://facebook.com/add.php?api_key=_APP_ID&pages=1&page=_PAGE_ID

2) ここにあるコードを取得します。

https://graph.facebook.com/oauth/authorize?client_id=_APP_ID_&scope=manage_pages&redirect_uri=http://www.facebook.com/connect/login_success.html

ブラウザの URL ボックスに非常に高速な出力が表示されるので、それをすばやくコピーします。この出力は次のようになります

https://www.facebook.com/connect/login_success.html?code=1234546bigstringwithlotsoflettersandnumbersdfdarsd#_=_

3) CODE を使用して、ユーザーの有効期間が短いアクセス トークンを取得します (Graph API Explorer を使用した場合と同じように取得できると思います))

https://graph.facebook.com/oauth/access_token?client_id=_APP_ID_&redirect_uri=http://www.facebook.com/connect/login_success.html&client_secret=_APP_SECRET_&code=_CODE_

4) 短命のアクセス トークンを長命のアクセス トークンに変換します (まだユーザー):

https://graph.facebook.com/oauth/access_token?client_id=_APP_ID_&client_secret=_APP_SECRET_&grant_type=fb_exchange_token&fb_exchange_token=_SHORT_LIFE_ACCESS_TOKEN_

このアクセス トークンが長期間有効かどうかは、 https://developers.facebook.com/tools/debug/accesstokenで確認できます。

4) Graph API Explorer ( https://developers.facebook.com/tools/explorer ) に移動し、[X] をクリックしてアクセス トークン ボックスをクリアし、前の手順で作成した長いアクセス トークンを入力します。 .

5) 次のボックスで、/ACCOUNT/ を選択して、このアクセス トークンが関連付けられているユーザーのすべてのページを表示します。これらのページのアクセス トークンは、 https://developers.facebook.com/tools/debug/accesstokenで確認できる期限切れのアクセス トークンではありません。

それが私にとってはうまくいきました。

于 2013-11-11T19:42:05.760 に答える
0

APP-ID関連するアプリ IDに置き換えるのを忘れました。

アプリの設定から同じものを取得できます


短命トークンを取得するには:

if(empty($code))
{ 
    $dialog_url= "http://www.facebook.com/dialog/oauth?"
                . "client_id=" . $APP_ID
                . "&redirect_uri=" . urlencode( $post_login_url)
                . "&scope=publish_stream,email";

    echo("<script>top.location.href='" . $dialog_url . "'</script>");
}
else 
{
    $token_url = "https://graph.facebook.com/oauth/access_token?"
                    . "client_id=" . $APP_ID
                    . "&redirect_uri=" . urlencode( $post_login_url)
                    . "&client_secret=" . $APP_SECRET
                    . "&code=" . $_REQUEST["code"];

    $response = file_get_contents($token_url);
    $params = null;
    parse_str($response, $params);
    $access_token = $params['access_token'];
}
于 2013-11-08T20:07:16.597 に答える