标签:php facebook-login symfony facebook-php-sdk
我正在尝试为网络应用程序实现facebook登录.
这是FacebookConnect.php
<?php
namespace Vendor\GiftBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Component\Routing\Generator\UrlGenerator;
class FacebookConnectController extends Controller
{
/**
* @Route("/connect/facebook", name="connect_facebook")
*/
public function connectFacebookAction(Request $request)
{
// redirect to Facebook
$redir = $this->generateUrl('connect_facebook_check', array(), UrlGeneratorInterface::ABSOLUTE_URL);
$facebookOAuthProvider = $this->get('app.facebook_provider');
$url = $facebookOAuthProvider->getAuthorizationUrl([
// these are actually the default scopes
'scopes' => ['public_profile', 'email'],
'redirect_uri' => [$redir],
]);
return $this->redirect($url);
}
/**
* @Route("/connect/facebook-check", name="connect_facebook_check")
*/
public function connectFacebookActionCheck()
{
// will not be reached!
}
}
当我点击触发connectFacebookAction函数的按钮时,我得到FB错误redirect_uri URL必须是绝对的.它就像忽略了我在参数中给出的绝对URL.
我究竟做错了什么?
编辑:授权网址在任何情况下都会发生变化,或者对应用程序保持不变?我可以直接硬编码,直到我弄清楚如何解决这个问题?
编辑2:我弄清楚为什么URL是相对的而不是绝对的.
这是我的服务配置:
services:
app.facebook_provider:
class: League\OAuth2\Client\Provider\Facebook
arguments:
-
clientId: %facebook_app_id%
clientSecret: %facebook_app_secret%
graphApiVersion: v2.8
redirectUri: "@=service('router').generate('connect_facebook_check', {}, true)"
如何从服务中的路由生成绝对URL?
解决方法:
您使用的是联盟/ oauth2-client的1.x版本(您可以登录composer.lock)吗?那个ignores the redirect_uri in getAuthorizationUrl并使用你在构造函数中传递的那个.如果您使用的是该版本,请将app.facebook_provider的定义更改为read
redirectUri: "@=service('router').generate('connect_facebook_check', {}, 0)"
注意0而不是true. The UrlGeneratorInterface constants have changed in 2.8.
标签:php,facebook-login,symfony,facebook-php-sdk 来源: https://codeday.me/bug/20190711/1429308.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。