【问题标题】:trying to get app access token试图获取应用访问令牌
【发布时间】:2012-10-08 13:35:34
【问题描述】:

我尝试使用以下代码为我的 facebook 应用获取 app-access-token:

APP_ACCESS_TOKEN = FB.api(
    "oauth/access_token",
    {client_id: APP_ID, client_secret: APP_SECRET_CODE, redirect_uri: uri},
    function(response){
    console.log(response);
});

应该是这样的:

GET https://graph.facebook.com/oauth/access_token?
        client_id=YOUR_APP_ID
       &client_secret=YOUR_APP_SECRET
       &redirect_uri=uri

但我得到一个错误:

code: 1
message: "Missing authorization code"
type: "OAuthException"

什么是授权码,如何获取?

【问题讨论】:

  • 您找到可行的解决方案了吗?
  • 对不起,我不记得了。太久了。那是在实验室期间。

标签: facebook access-token


【解决方案1】:

获取应用访问令牌

要获取应用访问令牌,请调用以下 HTTP GET 请求:

GET https://graph.facebook.com/oauth/access_token?
            client_id=YOUR_APP_ID
           &client_secret=YOUR_APP_SECRET
           &grant_type=client_credentials

API 将以如下形式的查询字符串格式的字符串进行响应:

access_token=YOUR_APP_ID|YOUR_APP_ACCESS_TOKEN

参考:http://developers.facebook.com/docs/opengraph/howtos/publishing-with-app-token/

【讨论】:

  • 谢谢,我正在找这个+!
  • 什么是 client_credentials ?
  • @VlasBashynskyi 如果你问你应该在那里输入什么值,你不是,它不是一个占位符,它是你使用的实际值。如果你问它做什么,不确定但可能让 facebook 知道你想要某种客户端凭据。
  • 截至 2017 年 4 月 27 日,api 响应格式已更改,并返回 {"access_token":"YOUR_APP_ID|YOUR_APP_ACCESS_TOKEN","token_type":"bearer"}
【解决方案2】:

https://developers.facebook.com/docs/howtos/login/login-as-app/:

“因为它要求您包含您的 App Secret,所以您不应尝试在客户端进行此调用,因为这会将这个 Secret 暴露给您的所有应用程序用户。 绝对不要与任何人共享您的 App Secret,这一点很重要。因此,此调用应在服务器端执行”

对于应用访问令牌,它也是一样的——你永远不应该在客户端使用它,因为每个用户都可以在那里发现它,然后开始使用它来代表你的应用执行操作(或更改您应用的许多设置)。

如果您的应用程序有服务器端部分,您可以简单地自己“构建”应用程序访问令牌,将应用程序 ID 和密码与管道符号 app_id|app_secret 连接起来。

【讨论】:

  • 非常感谢有关如何创建访问令牌的信息!
  • 即使您隐藏了 .js 文件,人们仍然可以在客户端看到它吗?
  • 当然可以,没有“隐藏”客户端脚本。
  • @CBroe 感谢分享拥有永久访问令牌的app_id|app_secret 连接方法。我一直在寻找这个问题的答案。
  • 如果我们使用应用令牌(永久令牌),是否需要提交 Facebook 应用进行审核?我们仅使用此应用令牌来获取 Facebook 页面的点赞数。完全有用户登录。
【解决方案3】:

检查 node.js 或 JAVASCRIPT 的用户。

getLongLiveToken: function(data){
    FB.api('oauth/access_token', {
        client_id: data.client_id, // FB_APP_ID
        client_secret: data.secret, // FB_APP_SECRET
        grant_type: 'fb_exchange_token',
        fb_exchange_token: data.access_token // USER_TOKEN
    }, function (res) {
        if (!res || res.error) {
            console.log(!res ? 'error occurred' : res.error);
        } else {
            var accessToken = res.access_token;
            if(typeof accessToken != 'undefined'){}
        }
    });
}

【讨论】:

    【解决方案4】:

    我不确定在代码中公开 APP 客户端密码是个好主意,您可以从 Facebook 工具“访问令牌工具”中获取 APP 令牌,只需将令牌复制到您的代码中以供任何使用https://developers.facebook.com/tools-and-support/

    【讨论】:

      【解决方案5】:

      您也可以在不生成令牌的情况下使用此 POST 端点,只需确保它是从服务器调用的,而不是从 app_secret 公开的客户端调用:

      https://graph.facebook.com/?id={url}&scrape=true&access_token={app_id}|{app_secret}
      

      【讨论】:

        猜你喜欢
        • 2017-10-08
        • 2021-09-02
        • 2014-07-09
        • 2017-04-21
        • 2015-07-19
        • 2018-02-17
        相关资源
        最近更新 更多