1

Facebookのログインを作成しようとしていますが、

私のサイトのログインボタンは私をFacebookにリダイレクトします。ログインするには、必要な許可('offline_access、emailなど')のために私のアプリケーションを許可するように依頼します。

ユーザーが許可すると、私の内側のページ(ユーザーページ)に戻ります。また、ユーザーのFacebook IDがデータベースにない場合は、ユーザーデータをデータベースに追加します。

ただし、毎回機能しているわけではありません(どちらの場合も、データベース内のユーザーであるかどうかは関係ありません)。時々それは次のエラーを出します:

A Database Error Occurred

Unable to connect to your database server using the provided settings.

Filename: core/Loader.php

Line Number: 346

これは、fbログインURLを生成する私のログイン関数です

$this->load->library('facebook');
        $user = $this->facebook->getUser();
        $data['loginUrl']="";
        $data['logoutUrl']="";
        if ($user) {
            try {
                $data['user_profile'] = $this->facebook->api('/me');
            } catch (FacebookApiException $e) {
                error_log($e);
                $user = null;
            }
        }
        if ($user) {
            $data['logoutUrl'] = $this->facebook->getLogoutUrl(array(
                'next' => ASITEURL . '/login/logout'));
        } else {
            $param['redirect_uri'] = ASITEURL . '/login/checkLogInfo';
            $param['scope'] = 'email,publish_stream,user_birthday';
            $data['loginUrl'] = $this->facebook->getLoginUrl($param);
        }
        $this->load->view('login/login', $data);

checkLogInfoは、セッションとデータベースのコードを処理する関数です。

Fbログインに成功した後(および最初にアクセス許可を付与した後)、次のURLにリダイレクトします。

http://mysite.com/login/checkLogInfo?state=4d59a4fe681ae940f036393c895d1c57&code=AQA3gAnl86izonBQyh8wThjNZuNowX1h6YBlGkeIiaQU__DFHDywC9nIgWYzW22EaxkVJB5nudjnNd4uElNs1-SFa0Ej_h4_4AAaYh4bLf9_HBpUiaSzbuDUcYg0WIIg0B4mvKq0_H3W3xH0gcKPWL1Fbrp3ff3IVt0unFIIeyevRb9oZwPld6NTKtU_tHxrQFtEdMgE6S2dwPcrbyY54g82#_=_

データベース設定:

    $db['default']['hostname'] = 'localhost';
    $db['default']['username'] = 'root';
    $db['default']['password'] = '';
    $active_group = 'default';
    $active_record = TRUE;

$db['default']['database'] = 'mydb';
    $db['default']['dbdriver'] = 'mysql';
    $db['default']['dbprefix'] = '';
    $db['default']['pconnect'] = FALSE;
    $db['default']['db_debug'] = TRUE;
    $db['default']['cache_on'] = FALSE;
    $db['default']['cachedir'] = '';
    $db['default']['char_set'] = 'utf8';
    $db['default']['dbcollat'] = 'utf8_general_ci';
    $db['default']['swap_pre'] = '';
    $db['default']['autoinit'] = TRUE;
    $db['default']['stricton'] = FALSE;

ありがとう

4

1 に答える 1

0

問題を理解しました。アプリケーションのデータベース設定が動的に読み込まれるのはURLによって異なります(URLに「QA」が含まれている場合はホスト名を変更します)。したがって、FacebookがQAを含むURLにリダイレクトするたびに(問題のURLとして)、エラーが表示されていました...

イタチとリックカルダーに感謝します。

于 2012-10-12T11:03:49.633 に答える