Опубликовать прямо на стене пользователя HTTP / 1.0 400 - PullRequest
0 голосов
/ 25 марта 2011

Я создаю приложение facebook, используя руководство для фейсбука

Когда пользователь разрешает доступ к приложению, тогда страница индекса перенаправляет его на tst.php, который непосредственно публикуется на стене пользователя

Я использую приведенный ниже код в индексе.php:

index.php

<?php 

require_once 'facebook-php-sdk/src/facebook.php';

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

$app_id = app_id;

$canvas_page = 'http://apps.facebook.com/tstsample/tst.php';

$auth_url = "http://www.facebook.com/dialog/oauth?client_id=" .
            $app_id . "&redirect_uri=" . urlencode($canvas_page) . 
            "&scope=email offline_access publish_stream";

$signed_request = $_REQUEST["signed_request"];

list($encoded_sig, $payload) = explode('.', $signed_request, 2);   

$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);

if (empty($data["user_id"])) {
     echo("<script> top.location.href='" . $auth_url . "'</script>");
} else {
     echo ("Welcome User: " . $data["user_id"]);
} 

?>

Ниже приведен код, который я использую в tst.php, который используется для прямой публикации на стене пользователя:

tst.php

<?php

$feedurl = "https://graph.facebook.com/134875956586326";
$ogurl = "http://www.facebook.com/apps/application.php?id=134875956586326"; 
$app_id = “134875956586326”; 
$app_secret = "app_secret";

$mymessage = urlencode("Hello World!");

$access_token_url = "https://graph.facebook.com/oauth/access_token"; 
$parameters = "type=client_credentials&client_id=" .  
$app_id . "&client_secret=" . $app_secret;
$access_token = file_get_contents($access_token_url . 
                "?" . $parameters);

$apprequest_url = "https://graph.facebook.com/feed";
$parameters = "?" . $access_token . "&message=" . 
              $mymessage . "&id=" . $ogurl . "&method=post";
$myurl = $apprequest_url . $parameters;

$result = file_get_contents($myurl);
echo "post_id" . $result;

?>

И после запуска приложения появляются две ошибки

  1. Я вижу страницу разрешения доступа, чем она останавливается настраница индекса
  2. После ручного запуска tst.php, как я упоминал в приведенном выше коде, я получаю ошибки PHP

Ниже приведены ошибки:

Warning: file_get_contents(https://graph.facebook.com/oauth/access_token?type=client_credentials&client_id=�134875956586326�&client_secret=606636c88cd434c5140986d8472fc639) 
             [function.file-get-contents]: failed to open stream: HTTP request failed! 
                 HTTP/1.0 400 Bad Request in /home5/onkhuras/public_html/escribir/tstsample/tst.php
                     on line 14

Warning: file_get_contents(https://graph.facebook.com/feed?&message=Hello+World%21&id=http://www.facebook.com/apps/application.php?id=134875956586326&method=post) 
             [function.file-get-contents]: failed to open stream: HTTP request failed! 
                 HTTP/1.0 400 Bad Request in /home5/onkhuras/public_html/escribir/tstsample/tst.php
                     on line 21
post_id

Как мне разрешить эти две ошибки?

Примечание. Я получаю эти два кода из Facebook, которые я использую в index.php и txt.php

Ответы [ 2 ]

0 голосов
/ 10 ноября 2011

У меня была похожая проблема (второе сообщение об ошибке), и она была решена с помощью моего идентификатора приложения для $ ogurl, как это (последние несколько строк в файле tst.php):

...
$apprequest_url = "https://graph.facebook.com/feed";
$parameters = "?" . $access_token . "&message=" . 
          $mymessage . "&id=" . $app_id . "&method=post";
$myurl = $apprequest_url . $parameters;
$result = file_get_contents($myurl);
echo "post_id" . $result;
?>

В моем случае это привело к публикации сообщения на стене приложения.

0 голосов
/ 25 марта 2011

Снова проверьте руководство по аутентификации - https://developers.facebook.com/docs/authentication/.

Вам необходим код, возвращенный / dialog / oauth, чтобы получить access_token от https://graph.facebook.com/oauth/access_token

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...