ですから、似たようなトピックがたくさんあることは知っています。それらの大部分を読みましたが、まだ答えを見つけることができませんでした。ここに問題があります: 私は localhost で facebook PHP SDK 認証を使用しましたが、完全に正常に動作しました。getUser() 関数が ID を返し、ユーザー情報を取得できました。次に、実際のドメインに移動し、作業コードをコピーし、Facebook アプリの設定を編集し、getLoginUrl() 関数のパラメーター配列で redirect_uri を編集しました。そして今でもこのアプリからログインできます。データにアクセスする許可を求められますが、getUser() は 0 を返します。magento で実行しています。コードは次のとおりです。
public function facebook_main($controller_name) {
$appid = $this -> getAppId();
$secretid = $this -> getSecretId();
$facebook = $this -> facebook_config($appid, $secretid);
$user = $this -> get_user($facebook);
if (!$user) {
return $this -> get_login_url($facebook, $controller_name);
} else {
$user_profile = $facebook->api('/me','GET');
$facebook -> destroySession();
return $user_profile;
}
}
function getAppId() {
return Mage::getStoreConfig('social/fb/appid');
}
function getSecretId() {
return Mage::getStoreConfig('social/fb/secretid');
}
function get_user($facebook) {
return $facebook -> getUser();
}
function facebook_config($appid, $secretid) {
require_once "fb_include/facebook.php";
$facebook = new Facebook( array('appId' => $appid, 'secret' => $secretid, 'cookie' => true));
return $facebook;
}
function get_login_url($facebook, $controller_name) {
$redirect_uri = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
$scope = $this -> set_scope();
$params = array('scope' => $scope, 'redirect_uri' => $redirect_uri . "/index.php/socialintegration/".$controller_name."/fb");
$loginUrl = $facebook -> getLoginUrl($params);
$img_url = $redirect_uri."app/code/community/Cheesecake/SocialIntegration/Model/button_images/fb.png";
return "<a href=" . $loginUrl . "><img src=".$img_url." style='width: 40px'></a>";
}
function set_scope() {
return 'email,user_about_me, read_stream, friends_likes';
}