Facebook用户ID是否可以在未经授权的情况下访问应用程序?

时间:2014-04-14 12:49:54

标签: facebook

我正在为Facebook编写一个简单的调查应用程序(它只是一个询问用户阅读的书籍的表格)。我不想要任何关于用户的信息(除了他们在调查中输入的信息),我不想发布到他们的墙上等,但我想要他们的Facebook用户ID,所以我能认出来重复。

如果我允许用​​户在未经授权的情况下使用该应用,我是否仍然可以"看到"他们的Facebook用户ID?

3 个答案:

答案 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)

@Plamen是对的......但我不明白的是,你想让用户手动输入一些可能已经通过API获得的信息。

例如

  1. 您可以通过/{user_id}/bookshttps://developers.facebook.com/docs/graph-api/reference/user/books/)端点
  2. 收集喜欢的图书
  3. 使用Book OpenGraph对象(https://developers.facebook.com/docs/reference/opengraph/object-type/books.book
  4. 使用books.reads OpenGrpah操作(https://developers.facebook.com/docs/opengraph/guides/books.reads/