Facebook access_token:一旦用户接受我的应用,我怎么得到它?

时间:2010-04-30 09:49:21

标签: facebook access-token

当用户第一次访问包含facebook应用程序的我的网站时,需要他允许它并且他会被要求这样做,然后我得到了我可以转换为access_token的代码。到目前为止一切都很好。

但是,一旦用户访问过该网站,我该如何获取令牌? 只要这个令牌形式第一次激活一切都很好。但是,当用户一周前已经允许该应用并且只是再次访问我的页面时,如何获得另一个令牌呢?

5 个答案:

答案 0 :(得分:4)

现在Facebook正在迁移到Oauth2,由Javascript创建的cookie是不同的。我让它为我工作并将其添加到Rails的FGraph插件的分支 - https://github.com/imme5150/fgraph

其中一个技巧是当你从cookie中存储的“code”参数请求access_token时,你必须传入“redirect_uri”,但你希望它是空白的。

答案 1 :(得分:3)

在客户端流程中,您可以使用scope参数中的权限将用户重定向到OAuth对话框。如果用户已经接受了您的应用和权限,他将被重定向到URI片段中带有access_token的“redirect_uri”,否则将提示所需的权限。

https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri=YOUR_URL&scope=email,read_stream&response_type=token

在服务器端流程中,您应该拥有“代码”,这样您就可以将其兑换为OAuth端点上的access_token:

https://graph.facebook.com/oauth/access_token?client_id=YOUR_APP_ID&redirect_uri=YOUR_URLclient_secret=YOUR_APP_SECRET&code=THE_CODE_FROM_ABOVE

文档:https://developers.facebook.com/docs/authentication/

答案 2 :(得分:0)

我使用cookie方法将access_token存储在用户的计算机上。

FB.init({appId: 'your app id', status: true, cookie: true, xfbml: true});

在你的facebook.php文件中,你需要将cookieSupport设置为true,然后:

private $cookieSupport = true;

或者使用此处的get_facebook_cookie函数:Single sign-on with the JavaScript SDK

然后将access_token存储在名为“fbs_APPID”的cookie中( with expire )。如果你想让cookie持续几个小时,你需要提出扩展权限'offline_access':

  

使您的应用程序可以随时代表用户执行授权请求。默认情况下,大多数访问令牌在短时间后过期,以确保应用程序仅在主动使用应用程序时代表用户发出请求。此权限使我们的OAuth端点返回的访问令牌持久存在。

答案 3 :(得分:0)

你也可以用这个:

$access_token = $facebook->getAccessToken();

https://developers.facebook.com/docs/reference/php/facebook-getAccessToken/

答案 4 :(得分:-2)

使用php

session_start();
// Create our Application instance.
$facebook = new Facebook(array(
                'appId' => FACEBOOK_APP_ID,
                'secret' => FACEBOOK_APP_SECRET,
                'cookie' => true,
                'domain' => 'example.com'

));

$session = $facebook->getSession();

$me = null;
// Session based API call.
if ($session) {
    try {
        $uid = $facebook->getUser();
        $me = $facebook->api('/me');
        $_SESSION['me'] = $me;
        $_SESSION['uid'] = $uid;
        $_SESSION['session'] = $session;

    } catch (FacebookApiException $e) {
        error_log($e);
    }
}

您可以通过应用程序中的$ _SESSION ['session'] ['access_token']引用access_token,以获取更多关于fbdevtutorials.com的教程