好的,我正在尝试使用labrvel的Hybridauth。但是当我尝试使用facebook登录时,我似乎变得非常普遍:
身份验证失败! Facebook返回了无效的用户ID。
我已阅读所有其他帖子,并且没有运气,所以只是希望有人可以帮助我。
我遵循了本教程:http://www.mrcasual.com/on/coding/laravel4-package-management-with-composer/
并尝试了其他几种配置但没有成功。
这是我的config / hybridauth.php
<?php
return array(
"base_url" => "http://myapp.dev/social/auth/",
"providers" => array (
"Facebook" => array (
"enabled" => true,
"keys" => array ( "id" => "****", "secret" => "****" ),
),
),
);
这是我的路线:
Route::get('social/{action?}', array("as" => "hybridauth", function($action = "")
{
// check URL segment
if ($action == "auth") {
// process authentication
try {
Hybrid_Endpoint::process();
}
catch (Exception $e) {
// redirect back to http://URL/social/
return Redirect::route('hybridauth');
}
return;
}
try {
// create a HybridAuth object
$socialAuth = new Hybrid_Auth(app_path() . '/config/hybridauth.php');
// authenticate with Facebook
$provider = $socialAuth->authenticate("Facebook");
// fetch user profile
$userProfile = $provider->getUserProfile();
}
catch(Exception $e) {
// exception codes can be found on HybBridAuth's web site
return $e->getMessage();
}
// access user profile data
echo "Connected with: <b>{$provider->id}</b><br />";
echo "As: <b>{$userProfile->displayName}</b><br />";
echo "<pre>" . print_r( $userProfile, true ) . "</pre><br />";
// logout
$provider->logout();
}));
所以,当我访问“myapp.dev/social”时,我被带到facebook注册页面,everthing似乎工作正常,要求我允许myadd.dev权限。单击“确定”后,我将转到以下URL:http://myapp.ie/social#_=_
,其中显示错误。
不确定这是否相关:
只是观察与facebook登录合作的其他网站..重定向网址类似于http://somesite.dev/subdomain/#_=_
。换句话说,它们在# = 之前有一个斜杠。这是我的问题,我该如何解决?非常感谢hybridauth,所以任何帮助都非常感谢。
哦,我确实意识到这篇文章与其他帖子非常相似,但我还没有找到解决方案。
更新:确切错误:Authentification failed. The user has canceled the authentication or the provider refused the connection.
答案 0 :(得分:6)
在base_facebook.php中执行以下操作
public static $CURL_OPTS = array(
CURLOPT_CONNECTTIMEOUT => 50,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 60,
CURLOPT_USERAGENT => 'facebook-php-3.2',
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => false,
);
protected $trustForwarded = true;
protected $allowSignedRequest = false;
答案 1 :(得分:1)
CURLOPT_SSL_VERIFYPEER =&gt;假, CURLOPT_SSL_VERIFYHOST =&gt;假的
at modules / hybridauth / Hybrid / thirdparty / Facebook / base_facebook.php:128
解决!
答案 2 :(得分:0)
对于其他任何人来说,这对我有用:我重置app秘密,现在效果很好。不知道为什么我的第一个应用程序密钥不起作用。花了很多时间试图解决这个错误。
答案 3 :(得分:0)
过去有这个错误。通过自己修改Hybridauth的代码来解决。
如果有帮助,请告诉我。
答案 4 :(得分:0)
CURLOPT_SSL_VERIFYPEER =&gt;虚假&amp;重置我的应用程序密钥对我不起作用。由于与我之前设置的权限存在某些冲突,我收到此错误。从我的Facebook帐户中删除应用程序就行了(在隐私设置 - &gt;应用程序下)。
答案 5 :(得分:0)
删除 TRAILING SLASH !!! (在config / hybridauth.php中)
"base_url" => "http://myapp.dev/social/auth/",
应该是
"base_url" => "http://myapp.dev/social/auth",
答案 6 :(得分:0)
我的情况稍微具体一点,但以防万一:小心重定向!
我安装了SSL证书并重定向以强制用户https
,但是当我第一次配置HybridAuth时,我没有考虑到这一点。 Facebook请求被重定向到https
,导致$_REQUEST
数据在此过程中丢失。
对我来说,改变是Hybrid/config.php
:
"base_url" => "http://my-site.com/"
到
"base_url" => "https://my-site.com/"
答案 7 :(得分:0)
我遇到了同样的问题(尽管在Yii上使用了HybridAuth)并且我在Facebook上的应用仍处于沙盒模式。 HybridAuth不需要更改源代码,只需关闭应用程序的沙盒模式,突然一切正常。希望这会有所帮助。
答案 8 :(得分:0)
这发生在我身上,因为我的SSL在AWS的负载均衡器中终止
只需更新app / config中的配置文件即可包含trustForwarded设置
<?php
return array(
'base_url' => 'http://website.com/oauth/auth',
'providers' => array (
'Facebook' => array (
'enabled' => true,
'keys' => array ( 'id' => 'redacted', 'secret' => 'redacted' ),
'trustForwarded' => true,
),
),
);
答案 9 :(得分:0)
在使用Hybridauth的wordpress安装上,我有完全相同的错误消息。为了找到问题,我使用Facebook PHP SDK(Hybridauth使用)设置了一个独立的测试,以发现我的主机上没有启用curl_exec
。令人高兴的是,这很容易解决。
如果你正在使用apache打开php.ini
并从此行删除curl_exec
:
disable_functions = curl_exec
重新加载你的apache配置并瞧瞧:)
希望这会对某人有所帮助。