这是我不久前就该主题写的一些内容,用于文档目的。希望对您有所帮助:
使用 Facebook Graph API 创建应用程序
2012 年 1 月 27 日
开始使用 Facebook
要开始使用 Graph API 构建 Facebook 应用程序,您首先需要在 Facebook 注册,然后才能开始编码https://developers.facebook.com。创建帐户或使用现有帐户登录后,您将需要创建新应用程序(如果您使用现有应用程序,则需要正确配置应用程序)。
要创建您的 Facebook 应用程序,请访问https://developers.facebook.com/apps并单击“创建新应用程序”(如果您已经创建了应用程序并想要对其进行配置,则单击“编辑应用程序”)。在“设置”->“基本”选项卡下,您至少需要填写应用程序显示名称、联系电子邮件和站点 URL。其中,站点 URL 是最重要的,并且必须指向您的应用程序将驻留的位置(如果您还不知道,可以随时更新)。接下来,转到“设置”->“身份验证对话框”选项卡。您不需要填写任何内容,但这是一个好主意,因为这是用户在允许您的应用程序访问其帐户时将看到的内容。保存一切并返回https://developers.facebook.com/apps。您应该在此页面上看到您刚刚配置的应用程序。从此时开始,您需要复制以下两件事才能继续操作:应用程序 ID/API 密钥和应用程序密钥。您现在已准备好开始创建应用程序。
了解流程
在开始编写应用程序之前,最好了解对用户进行身份验证并将应用程序安装到他们的 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/- 显示:这告诉 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-iUdRl6V3Moxfk4Cqz0igZbnkHxWi 4Yl_KphXiRkbnCCW_zDqb4W2lfew9sla4FPDUKhXscRuQeI--61uQ0uStb9GwrOH4V94DjGWk1yS-Ffs#=
一旦您将代码 GET 变量传回您的redirect_url,您就可以与 Facebook 交换它以获取您的 OAuth 访问令牌。为此,您需要使用刚刚返回的代码向 Facebook 构建请求。获取访问令牌的请求如下所示:
https://graph.facebook.com/oauth/access_token?client_id=[您的 API 密钥]&redirect_url=[处理身份验证的服务]&client_secret=[您的应用程序密钥]&code=[用户接受代码]
client_id:这是您在创建应用程序时从 Facebook 获得的 API 密钥。
redirect_url:这是将处理您的所有身份验证的服务。它应位于您在使用 Facebook 设置应用程序时配置的站点 URL。该 URL 在整个身份验证过程中必须保持不变。这必须与您在上面获取代码时使用的 URL 相同client_secret:这是您在创建应用程序时从 Facebook 获得的应用程序密码。
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:这是您从身份验证过程中获得的访问令牌。
POST 应包含一个名为 message 的变量。消息变量是一个字符串,无论它设置为什么,用户的状态消息都会设置为什么。
如果您使用 cURL 和 PHP 发出 POST 请求,“Hello World”请求将如下所示
$fb_post_url = "https://graph.facebook.com/me/feed?access_token=“.$access_token;
$message_text = "你好世界!";
$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 );
卷曲关闭( $ch )
POST 请求将在响应正文中返回“成功”或“失败”JSON 消息。
有关发布到用户帐户的更多信息,请参阅:http://developers.facebook.com/docs/reference/api/status/
验证已接受您的应用程序的用户
用户接受您的应用程序后,当他们单击您的链接时,将不再提示“接受”您的应用程序,因为该应用程序已安装。身份验证过程保持完全相同,除了当他们单击将其带到身份验证页面的链接时,Facebook 将确定应用程序已被接受,并简单地将用户转发到您的redirect_url,并将代码附加到查询字符串。如果用户尚未登录,则将被要求登录其 Facebook 帐户,但他们将永远不必再次“接受”您的申请。如果您将来更改您的应用程序并添加其他权限,则下次他们尝试使用您的应用程序时,系统将提示他们仅接受新权限。