モバイル デバイスで Facebook SDK に問題があります。誰かが私に光を当ててくれることを願っています。
私は FB.getLoginStatus を実行している js sdk を持っており、response.status == 'connected'
その後ポップアップ iframe を開きます。ポップアップ iframe は PHP sdk を使用して do を実行します$facebook->getUser()
。これは、にリダイレクトした後でも、毎回 0 を返します$facebook->getLoginUrl()
。これについて驚くべきことは、PHP にリダイレクトするときに$loginUrl
ログイン ダイアログが表示されず、指定された redirect_uri に戻るだけで、$facebook->getUser()
まだ 0 であり$facebook->api('/me')
、例外をキャッチしようとすると、An active access token must be と表示されることです。現在のユーザーに関する情報を照会するために使用されます。
試しましたが$facebook->getAccessToken()
、まだ動作しません。また、JS SDKresponse.authResponse.accessToken
を PHP に戻して に入れてみましたが$facebook->setAccessToken()
、どちらも機能しません。一体何が起こっているのですか?デスクトップブラウザではこのような問題はありません.モバイルデバイスのみです..
明確にするために、これは私がテストに使用しているスクリプトです。
<?php
require_once(__DIR__ . '/../facebook-sdk-3.2.2/facebook.php');
$facebook = new Facebook(array(
'appId' => '[private]',
'secret' => '[private]',
'cookie' => true
));
$redirectUri = 'https://www.[private].com/ios-test.php';
$loginUrl = $facebook->getLoginURL(array(
'scope' => 'publish_stream,publish_actions,email',
'redirect_uri' => $redirectUri
));
echo '<a href="'.$loginUrl.'" target="_top">'.$loginUrl.'</a><br />';
var_dump($facebook->getUser());
exit(__FILE__.__LINE__);
ただし、iPhone の Facebook アプリでテストすると、ユーザー ID は 0 で、 をクリックする$loginUrl
と、認証ダイアログは表示されませんが、ユーザー ID が 0 のままの同じページに戻ります。Android ネイティブ ブラウザーでも同じことが起こります。 . iPhone で Chrome を使用すると、正しい Facebook ユーザー ID が表示されます。
私は本当にこれについて助けが必要です.4時間以上この壁に頭をぶつけてインターネットを探しました.助けになるものは何もありません. スタック オーバーフローを試すように勧められた人もいましたが、それが正しいことを願っています。