是否有可能编写一个在某人墙上发布消息的应用程序,如果该用户尚未接受该权限,则此时会提示这样做?
这是我的代码:
$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) {
}
答案 0 :(得分: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是最重要的,必须指向您的应用程序所在的位置(如果您还不知道,这可以在以后更新)。接下来,转到Settings-> Auth Dialog选项卡。您无需填写任何内容,但这是一个好主意,因为这是用户在允许您的应用访问其帐户时会看到的内容。保存所有内容并返回https://developers.facebook.com/apps。您应该会看到刚刚在此页面上配置的应用程序。从这一点开始,您需要复制的两件事是App ID / API Key和App Secret。您现在可以开始创建应用程序了。
了解流程 在开始编写应用程序代码之前,最好先了解验证用户并在其Facebook帐户上安装应用程序的流程。在您的应用安装在用户帐户上并且他们已向应用明确授予将内容发布到其帐户的权限之前,您将无法执行任何操作。好消息是,用户只需要对应用程序进行一次身份验证(除非他们将其卸载)。请查看下图以了解流程的工作原理:
验证用户 要启动身份验证过程,您必须构建一个链接,将用户引导至您的应用程序。这是您构建链接的方式: https://www.facebook.com/dialog/oauth?client_id=[YourAPI KEY]& redirect_url = [将处理身份验证的服务]& scope = [你需要的权限]& display = touch - client_id:这是您在创建应用程序时从Facebook获得的API密钥。 - redirect_url:这是将处理所有身份验证的服务。它应位于您使用Facebook设置应用程序时配置的站点URL。这是URL必须在整个身份验证过程中保持不变。 - 范围:这是用户帐户所需的任何权限。你应该只询问你真正需要的东西。我们通常只需要publish_stream。有关权限的完整列表,请参阅:https://developers.facebook.com/docs/reference/api/permissions/ - 显示:这是告诉Facebook使用什么皮肤的东西。由于我们将此用于移动应用程序,因此您应将其设置为" touch。"如果您不是为移动设备开发,可以一起省略。
当用户点击您构建的链接时,如果他们已登录,他们将被带到下面的页面。如果他们没有登录,将提示他们先登录。如果用户接受您的应用程序,拒绝您的应用程序请求,或者无法登录,则会将其定向到您在上面指定的redirect_url。根据用户在此页面上的操作,Facebook会在向用户发送用户时将不同的查询字符串附加到您的redirect_url。
如果用户点击"允许",它们将被发送到您的redirect_url,查询字符串将包含一个名为code的变量。这是您将用于获取用户的身份验证令牌的权限,允许您从应用程序访问其帐户。如果用户点击"不允许",无法登录或出现其他问题,则会将以下查询字符串附加到您的redirect_url:error_reason,error和error_description。 成功请求重定向网址的示例: ="> HTTP://niobiumstudio.com/appia/fbconnect/auth.php代码= AQDi7fT3whSPJr0O2ECwv494QSSNyrTFK_SGIexEFUGmw5XS8SvzfYiAsxpn0FspQYHkMgaUYH - PS1AnJnCtE-iUdRl6V3Moxfk4Cqz0igZbnkHxWi4Yl_KphXiRkbnCCW_zDqb4W2lfew9sla4FPDUKhXscRuQeI - 61uQ0uStb9GwrOH4V94DjGWk1yS-FFS# =
将代码GET变量传递回redirect_url后,您就可以与Facebook交换以获取OAuth访问令牌。为此,您需要使用刚刚返回的代码向Facebook建立请求。以下是获取访问令牌的请求: https://graph.facebook.com/oauth/access_token?client_id=[Your API Key]& redirect_url = [处理身份验证的服务]& client_secret = [Your App Secret]& code = [用户验收码] client_id:这是您在创建应用程序时从Facebook获得的API密钥。 redirect_url:这是将处理所有身份验证的服务。它应位于您使用Facebook设置应用程序时配置的站点URL。这是URL必须在整个身份验证过程中保持不变。 这是您在上面使用的相同网址 client_secret:这是您在创建应用程序时从Facebook获得的App Secret Code。 代码:这是您在上一个请求的查询字符串中返回的代码。
当您成功提出此请求后,您将收到OAuth访问令牌,该令牌允许您访问用户的Facebook帐户。这是身份验证的最后一步。与"代码不同,"访问令牌将位于响应正文中,而不是作为GET变量。以下是成功的响应: =的access_token&AAAB9BKw79ywBAPjNYxRwLhUE1mOgd3Ei1Nq2gPXxyWhiCISZAZA6ihZAor1NEPHRjuQ5x7NrkA7ITuV2IHVZBs6ZAaigbNdsMnX3l58RrQAZDZD放大器;期满= 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的变量。消息变量是一个字符串,无论它设置为什么,用户的状态消息将被设置为什么。 这是一个" Hello World"请求看起来像是使用cURL和PHP发出POST请求 $ fb_post_url =" https://graph.facebook.com/me/feed?access_token="。$ 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帐户,但他们将永远不必接受"接受"你的申请再次。如果您将来更改应用程序并添加其他权限,则下次他们尝试使用您的应用程序时,系统会提示他们仅接受新权限。
答案 1 :(得分:4)
这可能与发布到登录用户墙的方式相同:不使用端点:
https://graph.facebook.com/me/feed
只需使用:
https://graph.facebook.com/[UserID]/feed
进料
此连接对应于用户的Wall。您可以通过向PROFILE_ID / feed连接发出HTTP POST请求来创建链接,发布或状态消息。要查看更多详细信息,请参阅链接,帖子和状态消息文档。
引用API reference on the user object的“Feed”小节。
答案 2 :(得分:0)
答案是肯定而且没有:)如果可以的话,您无法在未经许可的情况下发布,报告为错误。如果我发现其他人写到我的墙上,那可能是一个疯狂的世界。但有一种方法。如果你代表他的朋友写信给那个人的墙。但在这种情况下,你必须得到朋友的许可。
答案 3 :(得分:0)
这是我使用php curl发布到Facebook墙上的一些代码:
$username = "${string}";
$message = "${string}";
$access_token = "${string}";
$url=curl_init();
$attachment=array('access_token'=>$access_token, 'message'=>$message);
curl_setopt($url, CURLOPT_URL, "https://graph.facebook.com/".$username."/feed");
curl_setopt($url, CURLOPT_POST, true);
curl_setopt($url, CURLOPT_POSTFIELDS, $attachment);
curl_setopt($url, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($url);
希望这可以帮到你
答案 4 :(得分:0)
在您的代码中,您有:
$response = $facebook->api("/userId/feed/", 'POST', $attachment);
你只需要替换它:
$response = $facebook->api("/".$userId."/feed/", 'POST', $attachment);
并使用您要发布的用户ID。
答案 5 :(得分:0)
文件撰写( '');
{“error”:{“message”:“必须使用有效的访问令牌来查询有关当前用户的信息。”,“type”:“OAuthException”,“code”:2500}