0

私は長い間、ユーザーのアクセス トークンを取得しようとしてきました。getSession() を使用してそこから access_token を取得することで、多くのサイトでそれを取得するために読んでいます...それは私に未定義の関数エラーを与えます..うまくいかない...だから私はついにアクセストークンを取得するための別の解決策を得たが、これはすべてのユーザーに同じアクセストークンを与えているようだ...問題がどこにあるのか何か考えはありますか? すべてのユーザーが同じトークンを持つことはできませんよね?

$app_id          = $facebook->getAppId();
            $app_secret      = $facebook->getApiSecret();

            function callFb($url, $params)
            {
                $ch = curl_init();
                curl_setopt_array($ch, array(
                    CURLOPT_URL => $url,
                    CURLOPT_POSTFIELDS => http_build_query($params),
                    CURLOPT_RETURNTRANSFER => true,
                    CURLOPT_VERBOSE => true
                ));

                $result = curl_exec($ch);
                curl_close($ch);
                return $result;
            }

            $params=array('client_id'=>$app_id, 'type'=>'client_cred', 'client_secret'=>$app_secret);
            $url = "https://graph.facebook.com/oauth/access_token";
            $access_token = callFb($url, $params);
            $access_token = substr($access_token, strpos($access_token, "=")+1, strlen($access_token));     
4

2 に答える 2

3

問題はtype=client_cred、ユーザーのアクセス トークンではなく、アプリのアクセス トークンが必要であることを Facebook に伝える を要求していることです。これは、インサイト、リアルタイム更新 API、公開データへのアクセスなどを行うために使用されます。ユーザーデータを取得したい場合は、そのフラグを渡すべきではありません。

本当に Graph API への独自のアクセスを展開したい場合は、https://developers.facebook.com/docs/authentication/の指示に従って、確実にそれを行うことができます。

于 2011-06-20T19:06:58.920 に答える
0

PHP SDK を使用しているとのことですが、コードのどこにも言及されていません。

適切な方法は次のとおりです。

<?php

    require('facebook.php');

    $fb = new Facebook(array('appId' => APP_ID, 'secret' => SECRET));

    $user = $fb->getUser();

    // if we have a valid user, we're logged in
    if ($user)
    {
        // do stuff with the API using the $fb object
    }
    else
    {
        // redirect the user to the authentication page
        header("Location: ".$fb->getLoginUrl());
    }

例は、 Facebook の SDK Githubから大部分が言い換えられています。

于 2011-06-20T19:02:15.413 に答える