2011-11-09 3 views
0

저는 현재 작업중인 게임의 업적을 설정하고 있습니다. Flash는 성취도에 대한 URL과 업적 잠금을 해제하라는 명령을 보냅니다. 내 서버에는 Flash에서 Facebook으로 표시 순서와 업적 URL을 전달하는 코드가 있습니다. 플래시에서 업적을 달성하기 위해 버튼을 누르면 게임에서 성공적으로 잠금 해제되며 시세 표시로 볼 수 있습니다. iFrame에서 버튼을 클릭하여 업적을 달성하면 잠금 해제되지 않습니다. $ result를 로깅하면 1이 반환되지만 시세 표시기에는 나타나지 않고 잠금 해제 된 것으로 계산됩니다.플래시에서 Facebook 업적을 설정하십시오.

postachievement.php

<?php 
    include 'src/facebook.php'; 
    $facebook = new Facebook(array(
    'appId' => '[APP_ID]', 
    'secret' => '[APP_SECRET]',)); 

    $access_token = $facebook->getAccessToken(); 

    //$uid = $facebook->getUser(); 
    $uid = "[Static ID for Testing]"; 

    $achievement = $_POST['achievement']; 

    $achievement_URL = 'https://graph.facebook.com/' . $uid . '/achievements'; 
    $achievement_result = https_post($achievement_URL, 
     'achievement=' . $achievement 
     . '&access_token=' . $access_token); 
     error_log($result); 

     function https_post($uri, $postdata) 
    { 
     $ch = curl_init($uri); 
     curl_setopt($ch, CURLOPT_POST, true); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata); 
     $result = curl_exec($ch); 
     curl_close($ch); 

     return $result; 
    } 

Achievements.as

package Facebook 
{ 
public class Achievements 
{ 
    public static var trophy:Achievements; 
    private static var achievement:String;    // URL of the Achievement 

    public function Achievements() 
    { 
     trophy = this; 
    } 

    public static function testAchievement1():void 
    { 
     achievement  = "https://(URL)/zombies/game/achievements/test6.html"; 
     Database.data.giveAchievement(achievement); 
    } 

    public static function testAchievement2():void 
    { 
     achievement  = "https://(URL)/zombies/game/achievements/test7.html"; 
     Database.data.giveAchievement(achievement); 
    } 

    public static function testAchievement3():void 
    { 
     achievement  = "https://(URL)/zombies/game/achievements/test8.html"; 
     Database.data.giveAchievement(achievement); 
    } 

    public static function testAchievement4():void 
    { 
     achievement  = "https://(URL)/zombies/game/achievements/test9.html"; 
     Database.data.giveAchievement(achievement); 
    } 

    public static function testAchievement5():void 
    { 
     achievement  = "https://(URL)/zombies/game/achievements/test10.html"; 
     Database.data.giveAchievement(achievement); 
    } 
} 
} 

성과를 다루는 데이터베이스 클래스의 일부 조각.

Database.as

// Give Achievement 
private static var achieveLoader:URLLoader = new URLLoader(); 
private static var achieveRequest:URLRequest = new URLRequest; 
achieveRequest.url = "https://(URL)/zombies/game/postachievement.php"; 

    // Grant Player an Achievement 
public function giveAchievement(_achievement:String):void 
{ 
    var vars:URLVariables = new URLVariables(); 
    vars.achievement  = _achievement; 

    achieveRequest.method = URLRequestMethod.POST; 
    achieveRequest.data = vars; 
    achieveLoader = new URLLoader(); 
    achieveLoader.dataFormat = URLLoaderDataFormat.TEXT; 
    achieveLoader.load(achieveRequest); 
} 

답변

0

이것은 플레이어의 액세스 토큰이 아닌 응용 프로그램을 받고있다. 응용 프로그램의 액세스 토큰을 가져 와서 정적으로 변수에 넣습니다. 앱의 액세스 토큰이 변경되지 않는 한이 작업이 가능합니다.