ゲームに FB 実績を実装し始めたところです。アプリに PHP SDK を使用しています。
PHP SDK クラスをサブクラス化するクラスから次のコードを使用して、実績を正常に登録しました。
$URL = 'apps.facebook.com/<app_name>/ach1.html';
$AppID = $this->getAppId();
$Params = array('achievement' => $URL);
$res = $this->api($AppID.'/achievements', 'POST', $Params);
これが Graph API Explorer を介して作成されたことを確認できます。
{
"data": [
{
"url": "http://apps.facebook.com/<app_name>/ach1.html",
"type": "game.achievement",
"title": "Tutorial",
"image": [
{
"url": "<app_img_url>/1-ach.jpg"
}
],
"description": "Tutorial Completed",
"site_name": "<app_name>",
"data": {
"points": 1
},
"updated_time": "2012-07-13T16:05:44+0000",
"id": "<id>",
"application": {
"id": "<app_id>",
"name": "<app_name>",
"url": "https://www.facebook.com/apps/application.php?id=<app_id>"
},
"context": {
"display_order": 0
}
}
]
}
ただし、自分で実績を作成しようとすると、false が返されます。
$URL = 'apps.facebook.com/<app_name>/ach1.html';
$UserID = 100000466230867;
$AccessToken = $this->getApplicationAccessToken();
$Params = array('access_token' => $AccessToken,
'method' => 'post',
'achievement' => $URL);
$res = $this->api($UserID.'/achievements', 'POST', $Params);
結果は「ブール偽」です。エラー コードは返されません。ここで明らかにまたは根本的に間違ったことをしていますか? 値1と0の「display_order」も提供しようとしました。
publish_actions パーミッションも付与したことを確認できます。
permissions:Array ( [data] => Array ( [0] => Array ( [installed] => 1 [email] => 1 [publish_actions] => 1 [bookmarked] => 1 ) ) )
私のアプリはゲームとしても正しく構成されています。
どんな助けでも大歓迎です!!
乾杯