在没有在线/登录的情况下发布到用户的墙 - 使用Graph API进行Facebook共享

Har*_*ish 7 php facebook facebook-graph-api facebook-php-sdk

嗨,我是facebook分享的新手.我想让用户使用他的uid登录,然后将其存储以供进一步使用

主要目的是在用户的墙上共享链接

下次没有显示Facebook窗口,我想通过ajax发布到他的墙上.

怎么可能有任何关于此的帮助将不胜感激!

编辑

我用了给出的例子然后尝试了curl函数

得到了这个错误

HTTP/1.1 403 Forbidden
Cache-Control: no-store
Content-Type: text/javascript; charset=UTF-8
Expires: Sat, 01 Jan 2000 00:00:00 GMT
P3P: CP="Facebook does not have a P3P policy. Learn why here: http://fb.me/p3p"
Pragma: no-cache
WWW-Authenticate: OAuth "Facebook Platform" "insufficient_scope" "(#200) 
This API call requires a valid app_id."
Set-Cookie: datr=g4JBTb4OsRZxBAztV7iIkpWg; expires=Sat, 26-Jan-2013 14:34:43 GMT;
path=/; domain=.facebook.com; httponly
X-Cnection: close
Date: Thu, 27 Jan 2011 14:34:43 GMT
Content-Length: 93

{"error":{"type":"OAuthException","message":"(#200) 
This API call requires a valid app_id."}}
Run Code Online (Sandbox Code Playgroud)

编辑,以便有人可能找到有用的

FACEBOOK连接

$facebook_connect =  array(
   'appId'  => 'YOUR APP_ID',
   'secret' => 'YOUR SEC KEY',
          'access_token'=>"USER'S ACCESS TOKEN",
   'cookie' => true
 );
Run Code Online (Sandbox Code Playgroud)

发布到用户墙

$facebook->api("/PROFILE_ID/feed", "post", array(
"message"=>"Hi Friends Join ****",
"name"=>"You're invited to join ****!",
"link"=>"www.****.com",
"description"=>"Great site",
"picture"=>"http://www.****.com/logo.jpg",
"caption"=>"Join *****"
)
Run Code Online (Sandbox Code Playgroud)

ifa*_*our 33

我建议你先开始学习Facebook Graph API的工作原理.

  1. Facebook 绝不会与您分享用户密码!
  2. 如果您只需要为用户提供共享链接的可能性,那么只需使用like插件即可.您还可以在您的网站中找到更多有趣的社交插件.
  3. 如果您使用类似的插件,它将不会打开任何弹出窗口,它会将链接直接发布到用户的墙上.
  4. 您始终可以使用Feed对话框
  5. 开始阅读Facebook文档

现在,在没有登录的情况下在用户的墙上(代表他)发布,您需要以下内容:

  1. 应用 access_token
  2. publish_stream权限,不需要长期访问令牌:

使您的应用能够将内容,评论和喜欢发布到用户的信息流和用户朋友的信息流.这是一个超集发布权限,其中还包括publish_actions.但请注意,Facebook建议使用用户启动的共享模型.请阅读平台政策,以确保您了解如何正确使用此权限.请注意,您无需请求publish_stream权限即可使用"源"对话框,"请求"对话框或"发送"对话框.

需要权限:
这可以通过多种方式完成:
使用Login Plugin:

<div class="fb-login-button" data-show-faces="true" data-width="200" data-scope="publish_stream" data-max-rows="1"></div>
Run Code Online (Sandbox Code Playgroud)

服务器端登录(重定向到OAuth对话框):

https://www.facebook.com/dialog/oauth?
     client_id=YOUR_APP_ID
     &redirect_uri=YOUR_URL
     &scope=publish_stream
     &state=SOME_ARBITRARY_BUT_UNIQUE_STRING
Run Code Online (Sandbox Code Playgroud)

PHP-SDK:

$loginUrl = $facebook->getLoginUrl(array("scope"=>"publish_stream"));
Run Code Online (Sandbox Code Playgroud)

JS-SDK通过FB.login方法:

 FB.login(function(response) {
   if (response.authResponse) {
     console.log('Welcome!  Fetching your information.... ');
     FB.api('/me', function(response) {
       console.log('Good to see you, ' + response.name + '.');
       FB.logout(function(response) {
         console.log('Logged out.');
       });
     });
   } else {
     console.log('User cancelled login or did not fully authorize.');
   }
 }, {scope: 'publish_stream'});
Run Code Online (Sandbox Code Playgroud)

出版:

$USER_ID = "XXXXXXXX"; // Connected once to your APP and not necessary logged-in at the moment
$args = array(
    'message'   => 'Hello from app',
    'link'      => 'http://www.masteringapi.com/',
    'caption'   => 'Visit MasteringAPI.com For Facebook API Tutorials!'
);
$post_id = $facebook->api("/$USER_ID/feed", "post", $args);
Run Code Online (Sandbox Code Playgroud)

注意:
虽然可以在没有用户存在的情况下发布,但始终记住Facebook推荐用户启动的共享模型

  • 啊,对不起你正在使用`offline_access`然后你需要指定`access_token`作为post数组的一部分! (4认同)