2012-06-04 7 views
10

Sto sviluppando un gioco PHP e vorrei pubblicare i punteggi migliori dei giocatori sul proprio muro/timeline di Facebook.Non è possibile pubblicare un punteggio elevato nella timeline del giocatore su Facebook

Ho creato un'applicazione Facebook e il codice PHP che sto usando per pubblicare il punteggio (come previsto da parte di Facebook per sé):

<?php 
require 'facebook-sdk/facebook.php'; 

$app_id = MY_APP_ID; 
$app_secret = MY_APP_SECRET; 
$score = 1500; // this is gonna be passed someway... 

$facebook = new Facebook(array(
    'appId' => $app_id, 
    'secret' => $app_secret, 
)); 

$user = MY_USER_ID; // to be replaced with a call to $facebook->getUser() 

$app_access_token = get_app_access_token($app_id, $app_secret); 
$facebook->setAccessToken($app_access_token); 
$response = $facebook->api('/' . $user . '/scores', 'post', array(
    'score' => $score, 
)); 
print($response); 

// Helper function to get an APP ACCESS TOKEN 
function get_app_access_token($app_id, $app_secret) { 
    $token_url = 'https://graph.facebook.com/oauth/access_token?' 
    . 'client_id=' . $app_id 
    . '&client_secret=' . $app_secret 
    . '&grant_type=client_credentials'; 

    $token_response =file_get_contents($token_url); 
    $params = null; 
    parse_str($token_response, $params); 
    return $params['access_token']; 
} 
?> 

Naturalmente c'è un login e installare la sezione che Ho omesso, chiedendo all'utente di accedere e concedere i privilegi "publish_stream" e "publish_actions" all'app.

Questo sta funzionando con successo, le uscite delle variabili di risposta 1. Posso vedere il punteggio pubblicato utilizzando l'API Explorer di Facebook Graph, quindi presumo che tutto funzioni davvero bene e senza intoppi.

Il problema è che non sono in grado di vedere la user story presumibilmente postata su Facebook. Leggendo la documentazione mi sembra che un utente debba essere automaticamente pubblicato quando si salva un punteggio. Ad esempio, dai un'occhiata a here o here.

Qualcuno ha già risolto questo problema? Vedi qualcosa che potrei aver perso? Potete indicarmi la giusta direzione per risolvere questo problema?

Qualsiasi aiuto sarà molto apprezzato.

+0

Hai controllato nel registro delle attività? Puoi accedervi tramite https://www.facebook.com/USER_ID/allactivity – Venu

+0

Sei sicuro di utilizzare un token di accesso all'app valido? (ad esempio, prova a echo 'out e assicurandoti che sia quello che ti aspetti) Hai provato a replicare la richiesta in [Graph API explorer] (https://developers.facebook.com/tools/explorer/)? –

+0

Purtroppo ho fatto entrambe le cose, come ho scritto: la partitura viene salvata da Facebook ma nessun post appare ovunque come mi aspettavo dai documenti. – HobieCat

risposta

4

Si scrive

Leggendo la documentazione mi sembra che una storia utente deve essere automaticamente pubblicata quando si salva un punteggio.

I punteggi non vengono pubblicati automaticamente. Sono pubblicati solo a determinate condizioni, in particolare quando un utente:

  • ottiene un nuovo punteggio elevato ("Storia punteggio elevato").
  • passare il punteggio di un altro amico ("Passing story").

Nel tuo codice pubblichi il punteggio 1.500 ogni volta. Dopo la prima volta che lo pubblichi, quando lo pubblichi ripetutamente per il test, la tua richiesta di post avrà esito positivo ma il punteggio non verrà più pubblicato poiché non è un nuovo massimo.

Fonti:
Facebook Developers: Games Tutorial.
Facebook Developers Developer Blog: Games Update: Expanding distribution for Scores and Achievements

+0

Il mio sviluppo è andato oltre, ora sto postando sia come colonna sonora che come post muro. Quindi non sto più pubblicando sempre 1.500 e sto verificando che il punteggio effettivo sia maggiore di quello che viene memorizzato su Facebook prima di postare. Mentre sto scrivendo sto facendo un test con un paio di amici, ti faccio sapere – HobieCat

+0

Tempo di aggiornamento: in seguito ai test che ho fatto con i miei amici, devo dire che funziona parzialmente. Sono riuscito a ottenere la "Passing story" solo tre volte su cinque e non ho mai avuto una "High score story". Avete ulteriori suggerimenti e/o spiegazioni? Quindi, sei la risposta migliore.Accettato :) – HobieCat

+0

Sono contento che mi abbia aiutato :) In base alla descrizione dei test, penso che le storie con punteggi più alti vengano filtrate internamente alla frequenza di FB in modo che queste storie non compaiano troppo spesso nel feed di un utente. Ad esempio, diversi nuovi post ad alto punteggio in un solo giorno da un giocatore che gioca non saranno pubblicati. I dettagli di come funziona questo filtro sembrano privati –

0

Ho letto qualcosa di recente che FB ha smesso di consentire i post di Api alle timeline. Verrà comunque visualizzato nel feed delle notizie ma non più sul loro muro.

+0

Puoi postare qualche link? 'Ho letto qualcosa' è abbastanza generico, non è vero? – HobieCat

1

È possibile creare un post sulla pagina di profilo di un programma con l'emissione di una richiesta HTTP POST al APP_ID/alimentazione (non profile_id/post) con le autorizzazioni publish_stream.

piu 'dettagli: TechNew.In

+0

Ok, ma questo non risolve la domanda Sembra più una soluzione alternativa, grazie comunque – HobieCat

1

Se il tuo problema è "Quando inserisco con successo un punteggio nell'API, non crea necessariamente una storia nel feed di notizie o nella cronologia" questo non è un problema - questo è il modo in cui funziona l'API dei punteggi.

I punteggi sono un'opzione di condivisione leggera, e non sono sempre mostrati singolarmente - raramente vedo storie di "User got score X" su Facebook, ma vedi "X battere il punteggio di Y in Z" e "X ha ottenuto un nuovo punteggio elevato 'abbastanza spesso - C'è anche un'unità Timeline sul profilo di un utente che mostra un riepilogo dell'attività di gioco e i dati dei punteggi sono mostrati lì.

Basta tenere distacco a/[utente]/colonne sonore quando l'utente ottiene un nuovo record e lasciare che Facebook si prende cura della distribuzione

Problemi correlati