创建 Facebook Canvas 应用程序 - 在 PHP SDK 中登录和验证


Creating Facebook Canvas app - login and validation in PHP SDK

重新开始...将 4 年前的 Facebook Canvas 应用程序升级到最新的 PHP SDK (4.0.23)。

据我了解,流程是这样的:

1) Facebook调用我的应用程序(mydomain.com/myApp)

2)我需要确定此Facebook帐户是否已登录我的应用程序-如果没有,则看起来像遇到signed_request。

3)我使用我的应用程序网址(mydomain.com/myApp)创建了一个FacebookRedirectLoginHelper,然后生成一个loginUrl。然后用户应该点击它。

4)Facebook提出权限请求,如果用户接受,则回调我的应用程序URL。这一次,我得到的不是signed_request,而是代码。此时 - 我是否再次创建一个 FacebookRedirectLoginHelper 来处理以获取我的会话?或者,正如 PHP SDK 文档所建议的那样,我是否应该创建一个 FacebookCanvasLoginHelper?

4a)阅读FacebookCanvasLoginHelper的代码,似乎我必须调用$helper->instantiateSignedRequest($signedRequest)才能使用它,否则那里将没有签名请求。但是我第一次得到的签名请求中没有 oauth 数据,所以 getSession() 失败了。

4b) 如果我使用 FacebookRedirectLoginHelper,我确实会得到一个会话,但其中没有signed_request。所以我无法获得用户 ID。如果我将我拥有的signed_request推送到 FacebookSession 对象中,仍然没有任何内容,因为初始signed_request没有它。

我在这里错过了什么?我需要的是帐户的Facebook UID,它存储在本地,以告诉我的应用程序谁在运行它。

帮助?思潮?我一定错过了什么,因为其他人有这个工作,对吧?

安 迪

你的最后一步(4a)是正确的。您获得的会话没有用户信息,它只是一个会话,您必须使用它来再次调用 API 并检索您想要的任何内容。您可以将其视为访问令牌的等效项,实际上,如果您有访问令牌,您甚至可以创建一个会话对象:

$session = new FacebookSession('access token here');

获得会话对象后,必须调用图形 API 才能获取所需的信息:

$request = new FacebookRequest($session, 'GET', '/me');
$response = $request->execute();

所有内容都在文档中进行了解释:https://developers.facebook.com/docs/php/gettingstarted/4.0.0

我希望它有所帮助。

编辑:我使用PHP SDK创建了一个简单的Facebook登录示例:https://github.com/javierdelacueva/facebook-php-login-example 请随时查看