-1

Web を隅から隅まで検索しましたが、直面している問題がわかりません。私は Facebook にページ タブ アプリケーションを持っています。ユーザーはページを開始するのが好きで、いくつかの質問に答えることができます。Facebook 接続を機能させることはできますが、ユーザー ID を取得してデータベースに保存することはできません。

インデックスページにこれがあります

<? include('db.php'); 
include_once("config.php");

// Finnur út hvaða spurninga sett á að nota
$sp_set = 1;

require_once 'facebook-php-sdk/src/facebook.php';
// Create our Application instance.
$facebook = new Facebook( array('appId' => '289393321124676',
'secret' => 'd47b7871e0a7fb475db6e2a643f675ed', 'cookie' => true, ));
$signed_request = $facebook -> getSignedRequest();
$like_status = $signed_request["page"]["liked"];
$user = $facebook->getUser();

//If the page is liked then display full app.

?>

また、ユーザー ID は常に null です。ユーザーが質問を送信すると、すべてがデータベースに保存されますが、ユーザーは 0 です。

助けてください

4

3 に答える 3

0

$ user = $ facebook-> getUser();

ユーザーが最初にアプリに接続していない限り、これによってユーザーIDが取得されることはありません。

そのため、アプリにクライアント側またはサーバー側の認証フローを実装する必要があります。https://developers.facebook.com/docs/authentication/pagetab/

于 2012-09-17T11:55:48.073 に答える
0

この例を試してください:

<?php

    $secret   = '********************************'; // App Secret 
    $app_id   = '***************';                  // App ID
    $page_url = 'https://www.facebook.com/*******'; // FB fan page URL, where the application tab is installed

    require 'src/facebook.php';

    $facebook = new Facebook(array(
        'appId'  => $app_id,
        'secret' => $secret,
    ));

    // Get User ID
    $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) {
            error_log($e);
            $user = null;
        }
    }

    // Login url will be needed depending on current user state.
    if (!$user) {
        $loginUrl = $facebook->getLoginUrl(array('redirect_uri' => $page_url.'?sk=app_'.$app_id));
    }

    $signed_request = $facebook->getSignedRequest();

?><!DOCTYPE html>
<html>
    <body><pre>

<?php 

    if (!$user): // isn't authorized
        echo '<a href="'.$loginUrl.'" target="_top">Authorize app</a>';
    else:
        if ($signed_request['page']['liked']): // likes
            echo 'The page is liked by user with id '.$signed_request['user_id'];
        else:
            echo 'The page is <strong>NOT</strong> liked by user with id '.$signed_request['user_id'];
        endif;
    endif;


?>
    </pre></body>
</html>
于 2012-09-17T13:27:20.413 に答える