Facebook SDK - 以编程方式获取访问令牌

Posted

技术标签:

【中文标题】Facebook SDK - 以编程方式获取访问令牌【英文标题】:Facebook SDK - Get access token programatically 【发布时间】:2015-11-17 01:36:35 【问题描述】:

我有一个使用 php 制作的 Web 应用程序,当我提交一个特定的表单时,我想发布到我的 Facebook 粉丝页面。 你可以看到下面的代码:

    $appId = "...";
    $appSecret = "...";
    $version = "v2.5";

    $fb = new Facebook\Facebook([
        'app_id' => $appId,
        'app_secret' => $appSecret,
        'default_graph_version' => $version,
    ]);

    $accounts = $fb->get("/me/accounts");
    $pages = $accounts->getGraphEdge()->asArray();

使用该代码,我有 FacebookSDKExceptionYou must provide an access token. 我还没有找到一种仅使用https://developers.facebook.com/tools/explorer 以编程方式生成访问令牌的方法。 我的作曲家:

"require": 
        "facebook/php-sdk-v4" : "~5.0"

如何以编程方式/自动获取访问令牌?或者你有什么建议?

【问题讨论】:

我相信您需要授权才能获得返回的访问令牌developers.facebook.com/docs/facebook-login/access-tokens 在我的粉丝页面中作为管理员粉丝页面发布(共享链接)的 Web 应用程序。不应显示任何用于登录 facebook 的弹出窗口。如何授权? 需要将用户发送到 FB 登录对话框。但是,如果您获得扩展页面令牌,则只需执行一次。 developers.facebook.com/docs/facebook-login/access-tokens 包含所有必要的详细信息。 @CBroe 向我的用户显示登录对话框是没有意义的,因为我的网络应用程序应该以管理员身份自动发布在我自己的粉丝页面上。我的用户不需要登录 facebook。 您需要通过登录流程发送页面管理员至少一次。您是想在应用程序中实现它,还是在应用程序之外创建令牌(通过“手动”执行必要的请求)取决于您。 【参考方案1】:

这就是我所做的。 开始使用 JS SDK 的代码here

如果 response.status===connected(在代码中找到该表达式)使用此代码获取访问令牌:

 var accessToken = response.authResponse.accessToken;

然后重定向到 PHP 代码所在的页面,并在 url 中附加 access_token...像这样:

  window.location = "http://localhostfb_test.php?access_token="+accessToken;

现在在服务器中使用这样的令牌。

$user_profile = $fb->get('/me',$_GET['access_token']);

here

Tokens are Portable 部分中明确提到令牌可以从客户端传送到服务器...这就是我在这里所做的

【讨论】:

Overflow012....也检查一下developers.facebook.com/docs/php/FacebookjavascriptHelper/5.0.0 如果您向公众展示访问令牌,是否容易受到任何黑客攻击?

以上是关于Facebook SDK - 以编程方式获取访问令牌的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Facebook iOS SDK 3.14.1 以编程方式创建 Facebook 测试用户

通过 Facebook iOS Sdk iphone 以编程方式对新闻提要进行喜欢/评论

以编程方式清除 Android 上的 Facebook SDK 4.0 会话

以编程方式从 iOS 中的 facebook SDK 注销

Facebook iOS SDK - 不使用 LoginButton 登录(以编程方式)

Facebook SDK 4.0 IOS Swift 以编程方式注销用户