5

OK、私はlaravel 4で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 のサインアップ ページが表示され、すべてが正常に機能しているように見え、myadd.dev へのアクセス許可を許可するよう求められます。[OK] をクリックするとhttp://myapp.ie/social#_=_、エラーが表示される URL に移動します。

これが関連しているかどうかわからない: 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 => false、CURLOPT_SSL_VERIFYHOST => false

モジュール/ハイブリッド認証/ハイブリッド/サードパーティ/Facebook/base_facebook.php:128 で

解決しました!

于 2014-02-28T11:35:23.080 に答える
0

私は同じ問題を抱えていました (Yii で HybridAuth を使用していましたが)、Facebook のアプリがまだサンドボックス モードであることがわかりました。HybridAuth でソース コードを変更する必要はありません。アプリのサンドボックス モードをオフにするだけで、突然すべてが機能しました。お役に立てれば。

于 2013-11-28T02:03:59.267 に答える
0

過去にこのエラーがありました。Hybridauthのコードを自分で変更することで解決しました。

  1. thirdparty/Facebook/base_facebook.php で $CURL_OPTS 配列が使用されていることを確認してください: CURLOPT_SSL_VERIFYPEER => false
  2. 私の場合、パフォーマンスを改善するためにセッション ファイルを閉じていたので、HA::STORE セッション変数が更新/設定解除されている Storage.php 内に session_start() を追加しました。

それが役立つかどうか教えてください。

于 2013-07-08T01:21:31.193 に答える
0

他の誰にとっても、これは私にとってうまくいったことです。アプリの秘密をリセットしたところ、うまく機能しました。最初のアプリの秘密鍵が機能しなかった理由がわかりません。このエラーを修正するために途方もない時間を費やしました。

于 2013-07-07T23:40:36.117 に答える
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 に答える