使用Facebook API PHP在someones墙上发布

gru*_*ber 3 php api facebook

是否有可能编写一个在某人墙上发布消息的应用程序,如果该用户尚未接受该权限,则此时会提示这样做?

这是我的代码:

$attachment =  array(
        'access_token' => $access_token,
        'message' => "$message",
        'name' => "testName",
        'description' => "Check Out new message",
        'link' => '',
        'picture' => "test message"
    );

    try {
        $response = $facebook->api("/userId/feed/", 'POST', $attachment);
    } catch (FacebookApiException $e) {

    }
Run Code Online (Sandbox Code Playgroud)

Jac*_*ack 6

以下是我为了文档目的而在一段时间内就此主题撰写的内容.希望它可以帮助你:

使用Facebook Graph API创建应用程序2012年1月27日

Facebook入门要开始使用Graph API构建Facebook应用程序,首先需要在Facebook注册,然后才能开始编码,访问https://developers.facebook.com.创建帐户或使用现有帐户登录后,您需要创建新的应用程序(或者如果您使用的是现有应用程序,则需要正确配置应用程序).要创建您的Facebook应用程序,请转到https://developers.facebook.com/apps并单击"创建新应用程序"(或"编辑应用程序",如果您已经创建了一个并且想要配置它).在Settings-> Basic选项卡下,您至少需要填写App Display Name,Contact E-Mail和Site URL.其中,站点URL是最重要的,必须指向应用程序驻留的位置(如果您还不知道,这可以在以后更新).接下来,转到设置 - >验证对话框选项卡.您不需要填写任何内容,但这是一个好主意,因为这是用户在允许您的应用访问其帐户时将看到的内容.保存所有内容并返回https://developers.facebook.com/apps.您应该会看到刚刚在此页面上配置的应用程序.从这一点开始,您需要复制的两件事是App ID/API Key和App Secret.您现在可以开始创建应用程序了.

了解流程在开始编写应用程序编码之前,最好先了解验证用户并在其Facebook帐户上安装应用程序的流程.在您的应用安装在用户帐户上并且他们已向应用明确授予将内容发布到其帐户的权限之前,您将无法执行任何操作.好消息是,用户只需要对应用程序进行一次身份验证(除非他们将其卸载).请查看下图以了解流程的工作原理:

验证用户要启动验证过程,您必须构建一个链接,将用户引导至您的应用程序.这是您构建链接的方式:https://www.facebook.com/dialog/oauth?client_id = [您的API密钥]&redirect_url = [将处理身份验证的服务]&scope = [您需要的权限]&display = touch - client_id:这是您在创建应用程序时从Facebook获得的API密钥. - redirect_url:这是将处理所有身份验证的服务.它应位于您使用Facebook设置应用程序时配置的站点URL.这是URL必须在整个身份验证过程中保持不变. - 范围:这是用户帐户所需的任何权限.你应该只询问你真正需要的东西.我们通常只需要publish_stream.有关权限的完整列表,请参阅:https://developers.facebook.com/docs/reference/api/permissions/ - display:这是告诉Facebook使用什么皮肤的内容.由于我们将此用于移动应用程序,因此您应将其设置为"触摸".如果您不是为移动设备开发,可以将所有内容一起省略.

当用户单击您构建的链接时,如果他们已登录,他们将被带到下面的页面.如果他们没有登录,将提示他们先登录.如果用户接受您的应用程序,拒绝您的应用程序请求,或者无法登录,则会将其定向到您在上面指定的redirect_url.根据用户在此页面上的操作,Facebook会在向用户发送用户时将不同的查询字符串附加到您的redirect_url.

如果用户单击"允许",它们将被发送到您的redirect_url,查询字符串将包含一个名为code的变量.这是您将用于获取用户的身份验证令牌的权限,允许您从应用程序访问其帐户.如果用户单击"不允许",无法登录或出现其他错误,则会将以下查询字符串附加到redirect_url:error_reason,error和error_description.一个成功的请求您的重定向URL的一个例子:="> http://niobiumstudio.com/appia/fbconnect/auth.php?code=AQDi7fT3whSPJr0O2ECwv494QSSNyrTFK_SGIexEFUGmw5XS8SvzfYiAsxpn0FspQYHkMgaUYH--PS1AnJnCtE-iUdRl6V3Moxfk4Cqz0igZbnkHxWi4Yl_KphXiRkbnCCW_zDqb4W2lfew9sla4FPDUKhXscRuQeI--61uQ0uStb9GwrOH4V94DjGWk1yS-Ffs# =

一旦您将代码GET变量传递回redirect_url,您就可以与Facebook交换它以获取您的OAuth访问令牌.为此,您需要使用刚刚返回的代码向Facebook建立请求.以下是获取访问令牌的请求:https://graph.facebook.com/oauth/access_token?client_id = [您的API密钥]&redirect_url = [处理身份验证的服务]&client_secret = [您的应用秘密]和代码= [用户接受代码] client_id:这是您在创建应用程序时从Facebook获得的API密钥.redirect_url:这是将处理所有身份验证的服务.它应位于您使用Facebook设置应用程序时配置的站点URL.这是URL必须在整个身份验证过程中保持不变. 这是您用来获取代码的相同网址 client_secret:这是您在创建应用程序时从Facebook获得的应用密码.代码:这是您在上一个请求的查询字符串中返回的代码.

成功发出此请求后,您将收到OAuth访问令牌,该令牌允许您访问用户的Facebook帐户.这是身份验证的最后一步.与"代码"不同,访问令牌将位于响应主体中,而不是作为GET变量.以下是成功的响应:access_token = AAAB9BKw79ywBAPjNYxRwLhUE1mOgd3Ei1Nq2gPXxyWhiCISZAZA6ihZAor1NEPHRjuQ5x7NrkA7ITuV2IHVZBs6ZAaigbNdsMnX3l58RrQAZDZD&expires = 5862您必须解析访问令牌,这将是您将使用访问用户帐户的方法.另请注意,存在与访问令牌一起发送的过期值.您将无法存储此访问令牌,并在以后的任何时候使用它.您必须立即使用它来执行您需要的操作然后丢弃它.如果获取访问令牌的请求失败,您将收到正文中的错误而不是访问令牌和过期.与访问令牌不同,它将采用JSON格式,因此请注意这一点.*有关身份验证过程的详细信息,请参阅:https://developers.facebook.com/docs/authentication/

发布到用户帐户现在您已拥有访问令牌,您将能够访问用户的帐户,直到令牌过期.可以使用各种权限执行许多操作,但由于我们只询问了publish_stream,因此本文档仅涵盖更新用户的状态消息.要更新用户的状态,我们必须对以下URL发出POST请求:https://graph.facebook.com/me/feed?access_token = [Access Token] access_token:这是您从中获取的访问令牌身份验证过程.POST应该包含一个名为message的变量.消息变量是一个字符串,无论它设置为什么,用户的状态消息将被设置为什么.如果你使用cURL和PHP $ fb_post_url =" https://graph.facebook.com/me/feed?access_token= " 发出POST请求,那么这就是"Hello World"请求的样子.$ access_token; $ message_text ="Hello World!";

$ ch = curl_init(); curl_setopt($ ch,CURLOPT_URL,$ fb_post_url); curl_setopt($ ch,CURLOPT_POST,true); curl_setopt($ ch,CURLOPT_POSTFIELDS,"message =".$ message_text); curl_setopt($ ch,CURLOPT_RETURNTRANSFER,true); curl_setopt($ ch,CURLOPT_TIMEOUT,30); $ fb_post_response = curl_exec($ ch); curl_close($ ch)POST请求将在响应正文中返回"成功"或"失败"JSON消息.

有关发布到用户帐户的更多信息,请参阅:http: //developers.facebook.com/docs/reference/api/status/

验证已经接受您的应用程序的用户在用户已经接受您的应用程序后,当他们点击您的应用程序时,他们将不再被提示"接受"您的应用程序,因为它已经安装.身份验证过程保持完全相同,除非他们单击将其带到身份验证页面的链接,Facebook将确定应用程序已被接受,只需将用户转发到redirect_url,并将代码附加到查询字符串.如果用户尚未登录,则需要登录他们的Facebook帐户,但他们将永远不必再次"接受"您的应用程序.如果您将来更改应用程序并添加其他权限,则下次他们尝试使用您的应用程序时,系统将提示他们仅接受新权限.