在不在线/登录的情况下发布到用户的墙 - 使用 Graph API 的 Facebook 共享 [英] Publishing To User's Wall Without Being Online/Logged-in - Facebook Sharing Using Graph API

查看:23
本文介绍了在不在线/登录的情况下发布到用户的墙 - 使用 Graph API 的 Facebook 共享的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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

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

如何可能对此提供任何帮助将不胜感激!

编辑

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

遇到这个错误

HTTP/1.1 403 禁止缓存控制:无存储内容类型:文本/javascript;字符集=UTF-8到期时间:周六,2000 年 1 月 1 日 00:00:00 GMTP3P:CP="Facebook 没有 P3P 政策.在此处了解原因:http://fb.me/p3p"编译指示:无缓存WWW-Authenticate: OAuth "Facebook Platform" "insufficient_scope" "(#200)此 API 调用需要有效的 app_id."设置 Cookie:datr=g4JBTb4OsRZxBAztV7iIkpWg;到期=周六,2013 年 1 月 26 日 14:34:43 GMT;路径=/;域=.facebook.com;httponlyX 连接:关闭日期:2011 年 1 月 27 日星期四 14:34:43 GMT内容长度:93{"error":{"type":"OAuthException","message":"(#200)此 API 调用需要有效的 app_id."}}

编辑以便有人觉得有用

脸书连接

$facebook_connect = 数组('appId' =>'你的 APP_ID','秘密' =>'你的安全钥匙','access_token'=>"用户的访问令牌",'cookie' =>真的);

发布到用户墙

$facebook->api("/PROFILE_ID/feed", "post", array("message"=>"你好朋友加入****","name"=>"邀请您加入****!","链接"=>"www.****.com",描述"=>很棒的网站","图片"=>"http://www.****.com/logo.jpg",标题"=>加入****")

解决方案

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

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

<小时>

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

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

<块引用>

使您的应用能够向用户发布内容、评论和喜欢流和用户朋友的流.这是一个超集发布权限,其中还包括 publish_actions.然而,请注意,Facebook 推荐用户发起的共享模式.请阅读平台政策以确保您了解如何正确使用此权限.请注意,您不需要请求publish_stream 权限以使用 Feed Dialog,请求对话框或发送对话框.

需要权限:
这可以通过多种方式完成:
使用登录插件:

<div class="fb-login-button" data-show-faces="true" data-width="200" data-scope="publish_stream" data-max-rows="1"></div>

服务器端登录(重定向到 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

PHP-SDK:

$loginUrl = $facebook->getLoginUrl(array("scope"=>"publish_stream"));

JS-SDK 通过 FB.login 方法:

 FB.login(function(response) {如果(response.authResponse){console.log('欢迎!正在获取您的信息....');FB.api('/me', function(response) {console.log('很高兴见到你,' + response.name + '.');FB.logout(功能(响应){console.log('登出.');});});} 别的 {console.log('用户取消登录或未完全授权');}}, {scope: 'publish_stream'});

发布:

$USER_ID = "XXXXXXXX";//连接到您的 APP 一次,暂时不需要登录$args = 数组('消息' =>'来自应用程序的你好','链接' =>'http://www.masteringapi.com/','标题' =>访问 MasteringAPI.com 获取 Facebook API 教程!");$post_id = $facebook->api("/$USER_ID/feed", "post", $args);

注意:
虽然可以在用户不在场的情况下发帖,但请始终记住 Facebook 推荐用户发起的共享模型

Hi i'm new to facebook sharing. I want to make a user log in using his uid and then store these for further uses

The primary purpose is to share links in the user's wall

next time onwards without showing the facebook window i want to post in to his wall through ajax.

How is it possible any help regarding this will be appreciated!

EDIT

I used the example given and then tried curl function

got this error

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."}}

EDIT SO THAT SOMEONE MAY FIND USEFUL

FACEBOOK CONNECTION

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

POST TO USER WALL

$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 *****"
)

解决方案

I suggest you start learning how Facebook Graph API works first.

  1. Facebook will NEVER share the user password with you!
  2. If you just need to give the user the possibility to share link, then just use the like plugin. You may also find more interesting social plugins to use in your website.
  3. If you use the like plugin, it won't open any popups and it would post the link directly to the user's wall.
  4. You could always use the Feed Dialog
  5. Start reading the Facebook Documentation


Now to post on the user's wall (on his behalf) without him being logged-in, you need the following:

  1. app access_token
  2. publish_stream permission, NO NEED for the long-lived access token:

Enables your app to post content, comments, and likes to a user's stream and to the streams of the user's friends. This is a superset publishing permission which also includes publish_actions. However, please note that Facebook recommends a user-initiated sharing model. Please read the Platform Policies to ensure you understand how to properly use this permission. Note, you do not need to request the publish_stream permission in order to use the Feed Dialog, the Requests Dialog or the Send Dialog.

Require the permission:
This can be done in multiple of ways:
Using the Login Plugin:

<div class="fb-login-button" data-show-faces="true" data-width="200" data-scope="publish_stream" data-max-rows="1"></div>

Server-side login (Redirect to the OAuth Dialog):

https://www.facebook.com/dialog/oauth?
     client_id=YOUR_APP_ID
     &redirect_uri=YOUR_URL
     &scope=publish_stream
     &state=SOME_ARBITRARY_BUT_UNIQUE_STRING

PHP-SDK:

$loginUrl = $facebook->getLoginUrl(array("scope"=>"publish_stream"));

JS-SDK through the FB.login method:

 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'});

Publishing:

$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);

Note:
While it's possible to post without the user's presence always remember Facebook recommends a user-initiated sharing model

这篇关于在不在线/登录的情况下发布到用户的墙 - 使用 Graph API 的 Facebook 共享的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆