0

我使用 facebook-android-sdk-3.0.1.b 将我的 Android 应用程序与 Facebook 集成。用户登录后(显式或隐式 - 无关紧要),调用回调:

@Override
protected void onSessionStateChange(SessionState state, Exception exception) {
    if (state.isOpened()) {         
        final String urlString = "http://www.facebook.com/22332332322";
        startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(urlString)));
    }
}

如您所见,我启动了一个浏览器,向它传递了一些 Facebook 页面。我的目标是让用户“喜欢”这个页面。然而,当用户在这个页面上按下“like”按钮时,他被要求授权。这不好,因为他已经授权了。

我很感兴趣是否可以从 facebook-android-sdk 中提取授权信息(访问令牌或其他)并将此信息传递给浏览器?

更新

我发现可以获取会话的访问令牌:

final String accessToken = getAccessToken();

但是如何将它传递给浏览器以使用户登录?

4

1 回答 1

3

我们也有这个问题。在我们的例子中,我们假设如果用户有 Facebook 帐户,他的设备上也有 Facebook 应用程序。因此,在这种情况下,当用户按下“关注我们”按钮时,我们只需打开带有我们页面的 Facebook 应用程序,用户只需按下“喜欢”按钮即可。

如果用户在他的设备上没有应用程序,我们会打开带有 Facebook 页面的浏览器。

你可以这样做:

try{

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("fb://profile/22332332322)); 
startActivity(intent);

}catch(Exception e){

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.facebook.com/22332332322")));
}

另一种可能性是使用 Facebook API 中的单点登录,这是一种对用户更友好的方法。用户可以看到您到底想要什么,并且可以授权或不授权。

如您所说,您可以获得访问令牌,但我认为您不能将其传递给浏览器。半年前我试过了,没有找到任何答案。

您可以查看我的问题,它可能会帮助您:

链接1

链接2

链接3

链接4

于 2012-11-13T15:15:22.790 回答