我正在使用PHP SDK编写Facebook登录集成并遇到上述错误。
在我们的主页上,我们有以下代码来请求public_profile
和email
。
$fb = new Facebook\Facebook([
'app_id' => '{our_app_id}',
'app_secret' => '{our_app_secret}',
'default_graph_version' => 'v2.4']);
$helper = $fb->getRedirectLoginHelper();
$permissions = ['public_profile', 'email'];
$loginUrl = $helper->getLoginUrl('http://oursiteurl/includes/fbcallback.php/',
$permissions);
此代码弹出一个新窗口,处理Facebook登录,授权应用程序权限,然后将我们发送回fbcallback.php
。用户可以拒绝向我们的应用透露他们的电子邮件,但我们的应用绝对必须是电子邮件。所以fbcallback.php
评估我们是否收到了电子邮件。如果是的话,我们在数据库中输入一条新记录;如果没有,我希望它提供重新请求电子邮件权限的选项。为此,我正在尝试以下方法:
$fb = new Facebook\Facebook([
'app_id' => '{our_app_id}',
'app_secret' => '{our_app_secret}',
'default_graph_version' => 'v2.4']);
$helper = $fb->getRedirectLoginHelper();
$permissions = ['public_profile', 'email'];
$accessToken = $helper->getAccessToken();
$redirect = "http://media.pvplive.com/includes/fbcallback.php/";
$loginUrl = $helper->getLoginUrl($redirect, $permissions, TRUE);
基本上,我正在循环回fbcallback.php
,但这次将rerequest
标记设置为TRUE
。我第一次收到fbcallback.php
登陆时没有收到任何投诉,但是当我点击新$loginUrl
的链接时,它会抛出以下错误:
Length of param app_id must be less than or equal to 32
我还没有找到任何解释这个错误的答案,或者需要纠正什么才能摆脱它。我正在使用here提供的答案来获取使用PHP SDK重新请求已拒绝的权限的代码。