2016-07-18 4 views
0

私のウェブサイトの特定のコンテンツにアクセスする前に、ユーザーがFacebookにログインするようにします。このコードは、ユーザーがFacebookからログアウトしたときに正常に動作します。 Facebookにログインしてから自分のサイトにリダイレクトするボタンが表示されます。Facebookにログインしているユーザーにログインしようとすると、返信する代わりにエラーが返されます

数日前までは、コードはすでにログインしていたときにも機能しました。ログインしたユーザーもログインボタンを見ましたが、クリックしたときにすぐに自分のサイトに戻ってきましたFacebookはまったくありません。彼らはすでにログインしているとき今、彼らは(URL https://www.facebook.com/common/invalid_request.php付き)Facebookのエラーページを参照してください。

Sorry, your request could not be processed. Please try again

私はFacebookのPHP SDKのバージョン5を使用しており、これは私のコードの関連する部分です。もちろん、「APP_ID」と「APP_SECRET」はライブコードの正しい文字列です。

require_once($_SERVER["DOCUMENT_ROOT"] . '/facbookphpsdk/autoload.php'); 

$fb = new Facebook\Facebook([ 
    'app_id' => 'APP_ID', 
    'app_secret' => 'APP_SECRET', 
    'default_graph_version' => 'v2.6', 
    'default_access_token' => 'APP_ID|APP_SECRET' 
]); 
$helper = $fb->getRedirectLoginHelper(); 

try { 
    $accessToken = $helper->getAccessToken(); 
} catch(Facebook\Exceptions\FacebookResponseException $e) { 
    // When Graph returns an error 
    echo "1<br>"; 
    echo $e->getMessage(); 
    exit; 
} catch(Facebook\Exceptions\FacebookSDKException $e) { 
    // When validation fails or other local issues 
    echo "2<br>"; 
    echo $e->getMessage(); 
    exit; 
} 

if (isset($accessToken)) { 

    // user is logged in to Facebook 

} else { 

    $helper = $fb->getRedirectLoginHelper(); 
    $permissions = ['public_profile']; // optional 
    $callback = 'http://my.website.com/login_to_facebook.php'; 
    $loginurl = $helper->getLoginUrl($callback, $permissions); 

    // show a login dialog for the user to log in to Facebook 

} 

答えて

0

問題は自分のコードでは全くありませんでした。

Facebookのログインとは関係のない何らかの理由で、私は、フォームのアクションとしてログインURLを提供していたし、そのフォームを提出することによって、Facebookのログインページにユーザーを送っ:

<form action="<?php echo $loginurl; ?>" method="post"> 
    <button type="submit" name="Facebook">Log in with Facebook</button> 
</form> 

いくつかの時間まで続きますこれはうまくいきました。Facebookにログインしていないユーザーにはまだ動作します。なんらかの理由で、現在ログインしているユーザーには機能しません。

私はリンクとしてログインURLを提供することで、問題を解決:

<a href="<?php echo $loginurl; ?>">Log in with Facebook</a> 

をこれは、今では、ログインやログアウトしたユーザーで動作します。

関連する問題