使用FB sdk让用户登录但屏幕卡在加载时

时间:2017-09-26 09:26:03

标签: android facebook authentication facebook-graph-api sdk

我使用FB Sdk让用户通过FB登录,但是点击继续使用Facebook 按钮,屏幕在加载时卡住了......下面是屏幕截图。< / p>

enter image description here

这是我使用https://stackoverflow.com/a/29379794

的代码

屏幕在加载时卡住的原因是什么?

1 个答案:

答案 0 :(得分:0)

使用以下代码进行Facebook登录:

login.setLoginBehavior(LoginBehavior.WEB_ONLY);
        login.setReadPermissions(Arrays.asList(
                "public_profile", "email", "user_birthday", "user_friends"));
        login.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {

            Log.e("ACESS_ON_SUCCESS---", "" + loginResult.getAccessToken());
            token = loginResult.getAccessToken();

            GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {


                @Override
                public void onCompleted(JSONObject object, GraphResponse response) {
                    Log.e("ACESS_ON_COMPLETED--", "" + AccessToken.getCurrentAccessToken());

                    Log.e("FaceBook Response", response.toString());

                    String responseStr = response.toString();
                     sharedpreferences = App.getInstance().getDefaultAppSharedPreferences();
                      editor = sharedpreferences.edit();

                    try {
                        if (responseStr.contains("\"id\"")) {
                            id = object.getString("id");
                            Log.e("USER-ID = ", id);
                            editor.putString(SharedPreferencesConstants.facebookId,id);
                        }

                        if (responseStr.contains("\"name\"")) {
                            name = object.getString("name");
                            Log.e("NAME = ", name);
                            editor.putString(SharedPreferencesConstants.userName,name);
                        }

                        if (responseStr.contains("\"email\"")) {
                            email = object.getString("email");
                            Log.e("EMAIL = ", email);
                            editor.putString(SharedPreferencesConstants.userEmail,email);                            }

                        if (responseStr.contains("\"birthday\"")) {
                            birthday = object.getString("birthday");
                            Log.e("BIRTHDAY = ", birthday);
                            editor.putString(SharedPreferencesConstants.userFbBirthday,birthday);
                            String strYear = birthday.substring(6, 10);
                            Log.e("BIRTHDAY LEN", strYear);
                            editor.putString(SharedPreferencesConstants.userFbBirthdayYear,strYear);
                        }



                        //EXTRACT PICTUREOBJECT  FROM MAINJSONOBJECT::::---
                        if (responseStr.contains("\"picture\"")) {
                            JSONObject pictureObject = object.getJSONObject("picture");
                            Log.e("PICTUREOBJ FRM MAINOBJ", "" + pictureObject.toString());

                            //EXTRACT  DATAOBJECT FROM PICTUREOBJECT::::---
                            JSONObject dataObject = pictureObject.getJSONObject("data");

                            //EXTRACT PROFILE_PIC  FROM DATAOBJECT::::---
                             profile_pic = dataObject.getString("url");

            Bundle params = new Bundle();
            parameters.putString("limit", total_friends_count);
            request1.setParameters(params);
            request1.executeAsync();*/
        }

        @Override
        public void onCancel() {
            Log.e("Error","canceled");
        }

        @Override
        public void onError(FacebookException error) {
            Log.e("Error",error.getMessage());
            Toast.makeText(WelcomeActivity.this, "FB Integration Failed", Toast.LENGTH_SHORT).show();
        }
    });

}