2010-05-06 4 views
12

Ich habe eine App erstellt, und jetzt möchte ich eine Nachricht auf einer meiner Freunde Wand mit der Verwendung der neuen Graph API veröffentlichen. Ist das machbar?How to FB Graph verwenden, um eine Nachricht auf einem Feed (Wand) zu posten

Ich benutze bereits oAuth und die Graph-api, um eine Liste aller meiner Freunde zu bekommen. Die API an http://developers.facebook.com/docs/api sagt mir https://graph.facebook.com/[userid]/feed zu kräuseln den Feed zu lesen, aber es sagt auch Howto mir eine Nachricht hinterlassen:

curl -F 'access_token=[...]' -F 'message=Hello, Arjun. I like this new API.' https://graph.facebook.com/arjun/feed 

Ofcourse das funktioniert nicht! Und ich kann nicht herausfinden, warum ..

Hier sind meine PHP-Code:

require_once 'facebook.php'; // PHP-SDK downloaded from http://github.com/facebook/php-sdk 
$facebook = new Facebook(array(appId=>123, secret=>'secret')); 
$result = $facebook->api(
     '/me/feed/', 
     array('access_token' => $this->access_token, 'message' => 'Playing around with FB Graph..') 
); 

Dieser Code keine Fehler macht wirft, und ich weiß, dass meine access_token richtig sind (sonst could't i laufen $ facebook-> api ('/ me access_token =' $ this-> access_token.).? mein Benutzerobjekt erhält

Hat jemand da draußen erfolgreich abgeschlossen ist eine Nachricht geschrieben Graph-aPI Dann i Ihre Hilfe brauche ! :-)

Antwort

18

Okay, ich löste schließlich das. Danke für Ihre Hilfe phpfour :-)

Erstens: Meine Verbindung-URL sieht wie folgt aus (mit "publish_stream"):

$connectUrl = $this->getUrl(
    'www', 
    'login.php', 
    array_merge(array(
    'api_key'   => $this->getAppId(), 
    'cancel_url'  => $this->getCurrentUrl(), 
    'req_perms'  => 'publish_stream', 
    'display'   => 'page', 
    'fbconnect'  => 1, 
    'next'   => $this->getCurrentUrl(), 
    'return_session' => 1, 
    'session_version' => 3, 
    'v'    => '1.0', 
), $params) 
); 

Zweite; Ich habe versucht, über

$result = $facebook->api(
    '/me/feed/', 
    array('access_token' => $this->access_token, 'message' => 'Playing around with FB Graph..') 
); 

auf Facebook posten aber der richtige Weg, dies zu tun, ist ein weiterer Parameter umfasst (‚post‘):

$result = $facebook->api(
    '/me/feed/', 
    'post', 
    array('access_token' => $this->access_token, 'message' => 'Playing around with FB Graph..') 
); 
6

Sie brauchen den "publish_stream" erweitert Erlaubnis, um in den Feed zu schreiben. Hier ist eine vollständige Liste von ihnen: .

Um die erweiterte Erlaubnis zu bekommen, auf diese Weise die Autorisierungs-Token erhalten:

https://graph.facebook.com/oauth/authorize? 
client_id=...& 
redirect_uri=http://www.example.com/callback& 
scope=publish_stream 
+0

Heute bin ich über Facebook :: getLoginUrl() zu genehmigen. Ich habe "publish_stream" unter "req_perms" hinzugefügt, aber ich denke, das ist nicht gut genug :( – qualbeen

+0

Nun, wenn Sie stecken bleiben, können Sie einen Blick auf meinen letzten Blogbeitrag werfen, wo ich ein funktionierendes Beispiel gezeigt habe: http: //bit.ly/cT40vV –

+1

Es sollte angemerkt werden, dass es "publish_stream" sein sollte, nicht "stream_publish". Siehe http://developers.facebook.com/docs/authentication/ –

0

Die alte Art und Weise ist, um Zugang zu erhalten. In GRAPH ersten erzeugt i Code Schlüssel mit:

$getLinkCode ='https://graph.facebook.com/oauth/authorize'. 
       '?client_id=YOUR_APPID'. 
       '&redirect_uri=YOUR_SITE'. 
       '&scope=publish_stream'; 

Und jetzt, wenn wir Code Schlüssel haben, können wir access_token von Link erzeugen:

$getLinkToken='https://graph.facebook.com/oauth/access_token'. 
       '?client_id=YOUR_APPID'. 
       '&redirect_uri=YOUR_SITE'. 
       '&client_secret=YOUR_SECRET'. 
       '&code=CODE_KEY'; 

Aber diese access_token Posten Sie Ihre Nachricht als BENUTZER nicht ANWENDUNG ... WARUM ?!

Wenn Sie auf Anfrage Wand Verwendung stellen:

$facebook->api('/YOUR_APPID/feed/', 'post', array('access_token' => $this->access_token, 'message' => 'Playing around with FB Graph..')); 
1

Neben chf,

Nach der Buchung:

$getLinkToken='https://graph.facebook.com/oauth/access_token'. 
       '?client_id=YOUR_APPID'. 
       '&redirect_uri=YOUR_SITE'. 
       '&client_secret=YOUR_SECRET'. 
       '&code=CODE_KEY'; 

bekam ich die Antwort:

https://graph.facebook.com/oauth/access_token? 
    client_id=xxxxxxxxxxxxxx 
    &redirect_uri=myurl 
    &client_secret=xxxxxxxxxxxxxx 
    &code=xxxxxxxxxxxxxx 
, client_secret oder Code

keine, die man

$facebook->api('/YOUR_APPID/feed/', 'post', 
array('access_token' => $this->access_token, 
'message' => 'Playing around with FB Graph..')); 
1

Da der Link sagt, ist: enter link description here

<?php 
    $app_id = "YOUR_APP_ID"; 
    $app_secret = "YOUR_APP_SECRET"; 
    $my_url = "YOUR_POST_LOGIN_URL"; 
    $code = $_REQUEST["code"]; 
    if(empty($code)) { 
    $dialog_url = "http://www.facebook.com/dialog/oauth?client_id=" 
    . $app_id . "&amp;redirect_uri=" . urlencode($my_url) . "&amp;scope=email"; 
    echo("<script>top.location.href='" . $dialog_url . "'</script>"); 
    } 
    $token_url = "https://graph.facebook.com/oauth/access_token?client_id=" 
    . $app_id . "&amp;redirect_uri=" . urlencode($my_url) 
    . "&amp;client_secret=" . $app_secret 
    . "&amp;code=" . $code; 
    $access_token = file_get_contents($token_url); 
    $graph_url="https://graph.facebook.com/me/permissions?".$access_token; 
    echo "graph_url=" . $graph_url . "<br />"; 
    $user_permissions = json_decode(file_get_contents($graph_url)); 
    print_r($user_permissions); 
?> 
0

Statt den Code unten verwenden

[facebook dialog:@"feed" 
andParams:params 
andDelegate:self]; 

Verwenden Sie die folgende Lösung

[facebook requestWithGraphPath:@"me/feed" andParams:params andHttpMethod:@"POST" andDelegate:self]; 
Verwandte Themen