5

好的,我正在尝试将 Hybridauth 与 laravel 4 一起使用。但是,在尝试使用 facebook 登录时,我似乎变得很常见:

认证失败!Facebook 返回了无效的用户 ID。

我已经阅读了所有其他帖子,并且没有运气,所以只是希望有人可以帮助我。

我遵循了本教程:http ://www.mrcasual.com/on/coding/laravel4-package-management-with-composer/

并尝试了其他几种配置均未成功。

这是我的配置/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 注册页面,一切似乎都正常,要求我允许对 myadd.dev 的权限。单击“确定”后,我被带到以下 URL:http://myapp.ie/social#_=_显示错误的位置。

不确定这是否相关:仅通过观察与 facebook 登录合作的其他网站.. 重定向 URL 看起来像http://somesite.dev/subdomain/#_=_ . 换句话说,他们在 # =之前有一个斜线。这是我的问题,我该如何解决??对 hybridauth 来说非常新,因此非常感谢您的帮助。

哦,我确实意识到这篇文章与其他帖子非常相似,但我还没有找到解决方案。

更新:确切的错误:Authentification failed. The user has canceled the authentication or the provider refused the connection.

4

10 回答 10

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;
于 2013-11-22T14:33:57.203 回答
1

CURLOPT_SSL_VERIFYPEER => 假,CURLOPT_SSL_VERIFYHOST => 假

在模块/hybridauth/Hybrid/thirdparty/Facebook/base_facebook.php:128

解决了!

于 2014-02-28T11:35:23.080 回答
0

以前有这个错误。通过自己修改 Hybridauth 的代码来解决。

  1. 在第三方/Facebook/base_facebook.php 中确保 $CURL_OPTS 数组使用:CURLOPT_SSL_VERIFYPEER => false
  2. 在我的情况下,我正在关闭会话文件以提高性能,所以我在 Storage.php 中添加了 session_start() ,其中 HA::STORE 会话变量正在更新/取消设置。

让我知道它是否有帮助。

于 2013-07-08T01:21:31.193 回答
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,
        ),
    ),
);
于 2014-09-29T09:36:22.423 回答
0

删除尾随斜线!(在 config/hybridauth.php 中)

"base_url" => "http://myapp.dev/social/auth/",

应该

"base_url" => "http://myapp.dev/social/auth",

于 2013-08-25T10:52:16.463 回答
0

我的情况更具体一点,但以防万一:小心重定向!

我安装了 SSL 证书和重定向以强制用户结束https,但是当我第一次配置 HybridAuth 时,我没有考虑到这一点。facebook 请求被重定向到https导致$_REQUEST数据在此过程中丢失。

对我来说,变化是Hybrid/config.php

"base_url" => "http://my-site.com/"

"base_url" => "https://my-site.com/"

于 2013-11-10T02:43:31.343 回答
0

对于其他人来说,这对我有用:我重置了应用程序密码,现在效果很好。不知道为什么我的第一个应用程序密钥不起作用。花了很多时间试图修复这个错误。

于 2013-07-07T23:40:36.117 回答
0

我遇到了同样的问题(尽管在 Yii 上使用了 HybridAuth),结果我在 Facebook 上的应用仍然处于沙盒模式。在 HybridAuth 上不需要更改源代码,只需要关闭应用程序的沙盒模式,然后一切都正常了。希望这可以帮助。

于 2013-11-28T02:03:59.267 回答
0

CURLOPT_SSL_VERIFYPEER => false & 重置我的应用程序密钥对我不起作用。由于与我之前设置的权限存在一些冲突,我收到了这个错误。从我的 Facebook 帐户中删除该应用程序就可以解决问题(在隐私设置 -> 应用程序下)。

于 2013-08-14T19:58:23.037 回答
0

我在使用 Hybridauth 的 wordpress 安装中收到了完全相同的错误消息。为了找到问题,我使用Facebook PHP SDK (Hybridauth 使用)设置了一个独立的测试,只是为了找出curl_exec我的主机上没有启用它。令人高兴的是,一个简单的修复。

如果您使用的是 apache,请打开您并从此行中php.ini删除:curl_exec

disable_functions = curl_exec

重新加载您的 apache 配置,瞧 :)

希望这会对某人有所帮助。

于 2016-02-01T19:17:46.927 回答