1

Facebookログインを介してCookieをアクティブ化しようとしているので、セッションが存在するかどうかに依存するわけでsharedSessionはありませんが、trueに設定すると、「ページが正しくリダイレ​​クトされていません」というエラーページが表示されます。 FacebookのログインがCookieを使用するようにするとしますか?フェイスブックSDK用にgithubの最新コードを使用しています(今日新しくダウンロードしました)-> https://github.com/facebook/facebook-php-sdk

javascriptSDKを使用していません。以下のコーディングはすべて、ヘッダーが送信される前に実行されます。取り出した場合sharedSession、正しくログインしますが、必要な情報を含むCookieが保存されません。

これが私が使っているコーディングです

$facebook = new Facebook(array(
    'appId'  => $Sets['facebook']['appId'],
    'secret' => $Sets['facebook']['appSecret'],
'sharedSession' => true,
//  'trustForwarded' => true
));
$user = $facebook->getUser();
if($user){
    try {
        // Proceed knowing you have a logged in user who's authenticated.
        $user_profile = $facebook->api('/me');
    } catch (FacebookApiException $e) {
        $user = null;
    }
}
// the user is logged into facebook
if($user){
    // I register them on my website..
    // and then send them to the index page
    header('Location: /index.php'); 
} else {
    // they are not registered through facebook
    if(isset($_GET['error'])){
            // this happens when an error is found
        die($_GET['error'].' error');
//      header("Location: /login/?error=".urlencode($_GET['error']));
        exit;
    } else {
            // send to facebook to log them in.
        $loginUrl = $facebook->getLoginUrl($Sets['facebook']['scope_array']);
//      die('sending to '.$loginUrl);
        header("Location: ".$loginUrl);
        exit;
    }
}

リダイレクトの前に関数を配置したことがわかりますdie()。これは、失敗した場所を特定できるかどうかを確認するためにデバッグするためのものですが、ユーザーがWebサイトに戻った後に発生するようです。 trustForward => trueですが、修正されませんでした。

私が求めているのは、ユーザーがWebサイトにアクセスするたびに、Facebookからログインしなくても、ユーザーがより長期間ログインできるようにすることです。

何が起こっているのかというと、ユーザーはFacebookにログインしようとしてループに陥り、Facebookと私のWebサイトの間でリダイレクトされます。これは、ユーザーが確認されないためです。繰り返しますが、これは私が設定したときにのみ発生します'sharedSession' => true

Facebook sdkに、自分のWebサイトからログインしようとしている人のコンピューターにCookieを保存させようとしていますが、Cookieが設定されていません。

4

2 に答える 2

0

その理由は、必要なアクセス許可が付与されていないため、最終的にトークンの facebook 検索に移動して戻ってきます。

必要な許可を確認してください。

于 2014-05-17T09:21:01.097 に答える
0

私はあなたの質問に混乱しています。何を達成したいですか:

1) Facebook の user_id を Cookie に保存するように設定する場合は、何もする必要はありません。oauth プロセスが完了すると、Facebook は「redirect_uri」URL にリダイレクトされ、Cookie は Facebook によって Cookie 値 fbsr_xxxx (xxxx は appId) に設定されます。

2) ユーザーのログイン状態をより長く維持したい場合は、独自のセッション値を設定して、ユーザーがログインしているかどうかを判断する必要があります。つまり、Facebook の oauth フローの後、ユーザーのログイン ステータスは Facebook のセッションとは何の関係もありません。

ところで: $Users->loginWithOauth、この関数には定義がありません。この関数は何のためにあるのでしょうか?

于 2013-03-11T14:48:23.580 に答える