位置值为空在Android的Facebook的API

问题描述:

我想做一个简单的应用程序,我唯一想要检索的是我的当前位置的坐标,使用Facebook用户的数据。 我按照本指南开始使用这样的: https://developers.facebook.com/docs/getting-started/facebook-sdk-for-android/3.0/位置值为空在Android的Facebook的API

唯一的区别就是我取代

user.getName(); 

user.getLocation().getLatitude(); //it's always null and so throws exception. 

然后我尝试过其他方法,如getCountry()或getState();该值始终为空。

任何人都知道如何解决这个问题,并使用这些方法获取位置值?谢谢。

这里是我的代码部分:

@Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    // start Facebook Login 
    Session.openActiveSession(this, true, new Session.StatusCallback() { 

    // callback when session changes state 

    @Override 
    public void call(Session session, SessionState state, Exception exception) { 
    if (session.isOpened()) { 
     // make request to the /me API 
     Request.executeMeRequestAsync(session, new Request.GraphUserCallback() { 

     // callback after Graph API response with user object 

     @Override 
     public void onCompleted(GraphUser user, Response response) { 
     if (user != null) { 
     TextView txt = (TextView) findViewById(R.id.text); 
     txt.setText("Latitude is: " + user.getLocation().getLatitude()); 
     } 
     } 
     }); 

    } 
    } 
}); 
} 

编辑:其自带的Facebook SDK中的hackbook项目样本中,我看到,有可能获得通过的位置ID坐标(经度和纬度),任何人知道如何?

好吧,我想我终于有了答案:摆脱ID坐标我用这个查询:

http://graph.facebook.com/ID 

然后就分析结果得到的坐标(纠正我,如果有一个更简单的方法,请) 其中ID是容易gettable:

user.getLocation(); 

通过我第一次尝试的方式,我仍然不知道为什么返回的值是零,也许我的解决方法的结果不准确,我想,但我意识到Facebook没有注册一个如此准确的位置当某人张贴某件东西到他的墙上时,而只是帖子来自的城市坐标。 (再次,纠正我,如果我错了请)。

谢谢。

+0

那么,准确性是一个隐私问题,我认为。对我来说,让我的朋友知道我在城市XY时发布了这些信息是可以的 - 但是我希望他们知道我现在站在前面的性商店的确切地址?也许宁可不... – CBroe 2013-03-12 10:27:54

+0

大声笑我认为你是对的,谢谢你的答案。 – c0rtexx 2013-03-12 20:32:21

+0

我正在尝试这个,但它只给城市,国家不能给国 – SAndroidD 2014-05-02 12:26:23

你必须使用的getProperty方法 - 一个例子来获取城市&国 -

user.getLocation().getProperty("name"); 

检查link,它说 - GraphUser提供所界定的用户的一个强类型的表示Graph API。请注意,此接口旨在与GraphObject.Factory一起使用,而不是直接执行

这个link有一些例子,这会让事情更清楚。

我举这个从这里 - 一些在这个响应数据的可访问的GraphUser接口的属性作为强类型属性 - 例如:生日其它性能可以通过使用的getProperty()方法并选择所需的键访问 - 例如:区域设置语言。此步骤向您显示如何访问用户的姓名,生日,语言,位置和区域设置。

+0

感谢它帮助 – 2014-03-12 12:21:33

getLocation()方法仅返回用户的当前城市。