我正在为Facebook编写一个简单的调查应用程序(它只是一个询问用户阅读的书籍的表格)。我不想要任何关于用户的信息(除了他们在调查中输入的信息),我不想发布到他们的墙上等,但我想要他们的Facebook用户ID,所以我能认出来重复。
如果我允许用户在未经授权的情况下使用该应用,我是否仍然可以"看到"他们的Facebook用户ID?
答案 0 :(得分:3)
未经授权? - 遗憾的是你不能!
查询当前用户的唯一方法是/me
- 它需要访问令牌以及用户需要授权您的应用的访问令牌。
如果您不想这样做以确保用户不接受您的调查,那么由于每个应用都使用授权,因此会发生这种情况。并且您不会要求任何额外的信息,只需要基本信息。所以,如果您想要该用户的独特内容,我认为您应该实现这一点!
但是,如果您不想实施以避免浏览文档和所有内容,我会为您提供获取用户ID所需的非常小的代码 -
window.fbAsyncInit = function() {
FB.init({
appId : '{app-id}',
status : true,
cookie : true,
xfbml : true
});
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
var uid = response.authResponse.userID;
// save this uid
} else if (response.status === 'not_authorized') {
login();
} else {
login();
}
});
};
(function(d){
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "https://connect.facebook.net/en_US/all.js";
ref.parentNode.insertBefore(js, ref);
}(document));
function login(){
FB.login(function(response) {
if (response.authResponse) {
FB.api('/me', function(response) {
var uid= response.id;
// save uid here
});
} else {
// user did not authorized your app, handle accordingly (continue as guest /ask for auth again by refreshing the page)
}
});
}
(只需用您的app-id替换{app-id}
。)
答案 1 :(得分:0)
不,用户必须已授权您的应用在signed_request
中拥有user_id
答案 2 :(得分:0)
例如
/{user_id}/books
(https://developers.facebook.com/docs/graph-api/reference/user/books/)端点