所以我正在重新编写我们的旧Facebook应用程序(从2011年开始),将其提升为鼻烟。它是一个直接的Canvas应用程序 - 我只是希望它在iFrame中运行,它不需要任何特殊权限。我试图从PHP SDK文档中的示例开始工作,而我没有FacebookSession。以下是我正在使用的内容:
// initialize the FacebookSession with our app and secret
FacebookSession::setDefaultApplication($this->fbapp_settings['appId'], $this->fbapp_settings['secret']);
// create a canvas login helper to deal with login stuff
$this->loginHelper = new FacebookCanvasLoginHelper($this->fbapp_settings['appId'], $this->fbapp_settings['secret']);
try
{
$this->facebookSession = $this->loginHelper->getSession();
if (empty($this->facebookSession) )
{
throw new Exception("Error, no facebook session created");
}
// this is where my code will do something cool
}
catch (FacebookRequestException $ex)
{
throw new Exception("FacebookException: " . $ex->getMessage() );
}
catch ( Exception $ex)
{
throw new Exception("Elite Exception: " . $ex->getMessage() );
}
我尝试使用"客户端OAuth登录"无论是开还是关。查看FacebookCanvasLoginHelper-> getSession的代码,问题是我得到的signedRequest没有OAuthData。奇怪的是,它似乎在昨天早些时候工作正常。
有什么想法吗?
谢谢, 安迪
附录:根据之前的评论,我重新添加了登录对话框。所以我的流程是: a)Facebook使用signed_request调用我的应用程序,我用它来创建一个没有OAuth凭据的FacebookSession,因此我调用了Login对话框(通过FacebookRedirectLoginHelper-> getLoginUrl函数创建)。登录对话框出现。我按好了,Facebook再次使用代码调用我的应用程序,而不是使用signed_request。我尝试创建一个FacebookSession - 首先我需要一个AccesToken,所以我调用了AccessToken :: getAccessTokenFromCode,它会抛出异常:
'Facebook\FacebookAuthorizationException' with message 'Error validating verification code. Please make sure your redirect_uri is identical to the one you used in the OAuth dialog request'
一旦我的应用被用户授予(通过登录对话框),如果我想获得UID,这是正确的方法吗(即使用"代码"来创建一个AccessToken并用它来创建一个FacebookSession)?流程中没有任何地方我可以看到我可以输入redirect_uri - GetAccessTokenFromCode显式地将其设置为空字符串,我猜这是问题所在。
感谢您的帮助, 安迪
答案 0 :(得分:0)
嗯,我决定采取信仰的飞跃,现在事情已经取得了进展。 I:
a)在我的应用程序顶部设置一个FacebookRedirectLoginHelper
b)使用指向我的应用程序的指针(mydomain.com/myapp)从中获取loginUrl,然后将其提供给授权
c)用户点击该链接,获取Facebook OAuth屏幕,如果他们说好,那么Facebook将通过loginUrl中嵌入的redirectUrl返回我的应用程序。使用FacebookRedirectLoginHelper,我获得了Facebook会话,我很好,我可以建立一个FacebookRequest来获取userProfile和UID。还有一个问题,就是打开一张新票。
感谢评论者。