是否可以通过 js api 获取用户扩展令牌?
如果不是通过单个查询获取多个用户令牌呢?
我得到这样的令牌;
https://graph.facebook.com/oauth/access_token?client_id=xxx&client_secret=xxx&grant_type=fb_exchange_token&fb_exchange_token=".$u[token]
您不能向该 url 发出 ajax 请求,因为 ajax 请求仅限于您的域(跨域安全策略),但您也许可以使用 facebook javascript sdk,尽管我不确定它是否会起作用。
就像是:
FB.api("oauth/access_token", "get", {
client_id: xxx,
client_secret: xxx,
grant_type: "fb_exchange_token",
fb_exchange_token: currentToken
}, function(response) {
console.log(response);
});
即使这可行,它也不是您应该使用的东西,因为您必须在请求中包含应用程序密码,并且由于您想从客户端这样做,这意味着应用程序密码将不再是一个秘密.
另外,这样做有什么意义?只要用户正在与您的应用程序交互,您就可以简单地使用它在处理无效和过期访问令牌中的状态:
使用 Javascript SDK 实现身份验证的桌面 Web 和移动 Web 应用程序
调用 FB.getLoginStatus() 或确保 status: true 在您调用 FB.init() 时设置意味着下次用户登陆您的应用程序并登录 Facebook 时,您将通过这些调用传递 authResponse 对象将包含一个新的、有效的访问令牌。
在这种情况下,它只是用户使用您的应用程序的行为,它隐式地生成了一个新的访问令牌。
至于您的另一个问题,facebook api 有所谓的Batch Requests,它可以让您在一个请求中进行一些 api 查询,但我不确定它是否适用于相对路径“oauth/access_token”,但不客气试试看。