8

我按照https://developers.facebook.com/docs/getting-started/facebook-sdk-for-android/3.0/上的“使用 Facebook 登录创建新的 Android 项目”部分的步骤进行操作,登录过程很好。因为我想使用原生 Android 按钮让用户登录,所以我稍微修改了代码,将以下代码移动到原生 Android 按钮的 View.OnClickListener() 中。以下是监听器中的代码:

Session.openActiveSession(MainActivity.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) {
                        Toast.makeText(getApplicationContext(), "Hello " + user.getName() +" "+user.getId()+"!", Toast.LENGTH_LONG).show();
                    }
                }
            });
        }
    }
});

onActivityResult() 和 AndroidManifest.xml 和教程一样

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
}

但是,我想在用户成功登录时请求获取“read_friendlists”。我在https://developers.facebook.com/docs/tutorials/androidsdk/3.0/scrumptious/authenticate/阅读了教程,但它使用 Facebook SDK 自定义按钮。如何使用像上面显示的代码一样的原生 Android 按钮实现相同的行为?

4

1 回答 1

3

我刚刚在另一篇文章中回答了类似的问题。我的解决方案允许您使用本机按钮并在用户首次登录时请求额外的读取权限。在此处查看使用 3.0 SDK 请求更多权限

于 2012-12-18T04:43:23.413 回答