FacebookのOAuthが私の心を揺らしています...再び。私たちは、かなりストレートフォワードシステムを持っている:カスタマイズされたREDIRECT_URIユーザーが戻って私たちにリダイレクトされるビア Facebookのredirect_uriはOAuthの後でユーザーを認識しません
- ユーザーは、Facebookの権限(壁に書いて、基本的なユーザー情報+延長許可)「を受ける」にはOAuthを使用していますユーザー情報がデータベースに格納され、ユーザーは、独自のログインシステムを使用して「ログイン」されているプラットフォームもあります。
しかし、問題は時々(私は繰り返します:時々...)ユーザーが$ user = $ facebook-> getUser()で認識されないことです。要求。 $ userが設定されている場合にのみ、ユーザーは認証され、$ facebook-> api( '/ me')を使用できることがわかっているので、データベースに格納されます。
最初の試行後にユーザーにエラーが表示されますが、[Facebookでログイン]を再度クリックすると、すべてうまく行きます。また、すべてのユーザーがこの問題を経験するわけではありません。私は、ログイン/アカウント作成のすべての処理を実行する際に、自分のコードがログインしたユーザーを「認識」していないと感じています。
本当に誰でも助けてくれることを願っています。コードを投稿しました。
INITIATION: $loginUrl = $facebook->getLoginUrl(array('scope' => 'friends_relationships,publish_stream,email,user_birthday,user_location,user_checkins,user_education_history,user_photos','redirect_uri' => 'REDIRECTED_PAGE.php')); RETURN PAGE (REDIRECT_PAGE.PHP) $fbuser = $facebook->getUser(); if ($fbuser) { try { $user_profile = $facebook->api('/me'); } catch (FacebookApiException $e) { error_log($e); $fbuser = null; } } $uid = $user_profile['id']; // -> here's the problem: $fbuser is either 0 or not set if (isset($fbuser) && $fbuser != '0') { $dbc = new DBC(); $dbc->connect(0, true); $fbemailquery = $dbc->executeQuery("SELECT * FROM users WHERE fbuid = '".$uid."'"); if(!$dbc->isResultEmpty($fbemailquery)) { // USER IS KNOWN, SO LOGIN } else { // NEW USER $firstname = $user_profile['first_name']; // etc etc } $dbc->close(); }
解決できましたか?はいの場合は、どのように共有してください。 –