0

アプリからログインしてfacebookユーザーの詳細を取得しようとしています。LoginbuttonFacebook SDK v3.5 の代わりに、独自のカスタム ボタンを使用しています。私の問題は、ボタンをクリックすると、ユーザーが友人リスト、電子メールなどの詳細にアクセスするための許可に同意するために表示されるはずの許可ダイアログボックスが表示されないことです。代わりに、読み込み中のシンボルが数秒間表示され、次のアクティビティに直接進みます。以下は私が使用しているコードです。ユーザーがログインボタンをクリックしたときに権限ダイアログボックスが表示されるようにします。以下は私のコードです

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);
            }
        }
    });
}
4

1 に答える 1

1

これを試して..

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);
            }
于 2013-10-24T07:27:11.133 に答える