我尝试使用以下代码获取我的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"
什么是授权码,我该如何获得?
答案 0 :(得分:65)
获取应用访问令牌
要获取App Access Token,请调用以下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/
答案 1 :(得分:46)
https://developers.facebook.com/docs/howtos/login/login-as-app/:
“因为它要求您包含App Secret,所以不应尝试在客户端进行此调用,因为这会将此秘密暴露给所有应用用户。 重要的是,您的App Secret绝不会与任何人共享。因此,此呼叫应在服务器端执行“
对于app访问令牌,它是相同的 - 你永远不应该在客户端使用,因为每个用户都可以在那里发现它,然后开始使用它代表你的app执行操作(或更改您应用的许多设置)。
如果您的应用程序有服务器端部件,您可以自己“构建”应用程序访问令牌,使用管道符号app_id|app_secret
连接app id和secret。
答案 2 :(得分:1)
检查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'){}
}
});
}
答案 3 :(得分:0)
我不确定在代码中暴露APP客户端秘密是个好主意,您可以从Facebook工具"访问令牌工具"中获取APP令牌。只需将令牌复制到您的代码中即可使用https://developers.facebook.com/tools-and-support/
答案 4 :(得分:0)
您也可以使用此POST端点而不生成令牌,只需确保从服务器调用它,而不是客户端调用app_secret公开:
https://graph.facebook.com/?id={url}&scrape=true&access_token={app_id}|{app_secret}