简体   繁体   English

Facebook android sdk登录权限问题

[英]Facebook android sdk login permission issue

I am trying to login to facebook from my app and get user details. 我正在尝试从我的应用程序登录facebook并获取用户详细信息。 I am using my own custom button instead of Loginbutton of facebook sdk v3.5. 我使用的是我自己的自定义按钮,而不是facebook sdk v3.5的Loginbutton My issue is, on clicking the button, the ask permission dialog box, that is supposed to appear for the user to agree for permissions to access details such as Friend list, email etc not coming. 我的问题是,在单击按钮后,将显示“询问权限”对话框,该对话框应该供用户同意以获取访问详细信息(例如“朋友列表”,“电子邮件”等)的权限。 Instead it shows loading symbol for few seconds and is directly going to the next activity. 而是显示加载符号几秒钟,并直接转到下一个活动。 Below is the code I am using. 下面是我正在使用的代码。 I want the permissions dialog box appear when user clicks login button. 我希望当用户单击登录按钮时出现权限对话框。 below is my code 下面是我的代码

fbLogin.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
             loginToFb();
        }
    });

}

private void loginToFb() {
    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()) {
                final Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(
                        LandingPageActivity.this, Arrays.asList("user_location", "user_birthday", "user_likes", "email"));
                session.requestNewReadPermissions(newPermissionsRequest);

                // make request to the /me API
                Request request = Request.newMeRequest(session,
                        new Request.GraphUserCallback() {

                            // callback after Graph API response with user
                            // object
                            @Override
                            public void onCompleted(GraphUser user,
                                    Response response) {
                                if (user != null) {
                                    fetchUserFbDetails(user);
                                    Intent intent = new Intent(getApplicationContext(),
                                            SignUpActivity.class);

                                                startActivity(intent);
                                            finish();
                                    }
                                }
                            }
                        });
                Request.executeBatchAsync(request);
            }
        }
    });
}

Try This.. 尝试这个..

private void loginToFb() {
    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()) {
                try
                        {
                            Session.OpenRequest request = new Session.OpenRequest(this);
                            request.setPermissions(Arrays.asList("user_location", "user_birthday", "user_likes", "email"));
                        }
                    catch (Exception e)
                        {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }

                // make request to the /me API
                Request request = Request.newMeRequest(session,
                        new Request.GraphUserCallback() {

                            // callback after Graph API response with user
                            // object
                            @Override
                            public void onCompleted(GraphUser user,
                                    Response response) {
                                if (user != null) {
                                    fetchUserFbDetails(user);
                                    Intent intent = new Intent(getApplicationContext(),
                                            SignUpActivity.class);

                                                startActivity(intent);
                                            finish();
                                    }
                                }
                            }
                        });
                Request.executeBatchAsync(request);
            }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM