Login to my app using facebook : error when using Facebook App

馋奶兔 提交于 2020-01-07 02:18:12

问题


Here is the Screenshot Logging into my App using Facebook credentials is not working correctly through browsers. But it gives an error when logging in through the Facebook App. It is not automatically redirecting to my App and remains in Facebook by showing "The page you requested cannot be displayed right now. It may be temporarily unavailable.....".like that. Thanks in Advance. Here is my LoginActivity:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
        FacebookSdk.sdkInitialize(getApplicationContext());
        setContentView(R.layout.activity_log);
        loginButton = (LoginButton) findViewById(R.id.login_button);
        loginButton.setReadPermissions("email");
        mail = (EditText) findViewById(R.id.log_mail);
        pass = (EditText) findViewById(R.id.log_pass);
        callbackManager = CallbackManager.Factory.create();


        accessTokenTracker = new AccessTokenTracker() {
            @Override
            protected void onCurrentAccessTokenChanged(
                    AccessToken oldAccessToken,
                    AccessToken currentAccessToken) {
                // Set the access token using
                // currentAccessToken when it's loaded or set.
            }
        };
        // If the access token is available already assign it.
        accessToken = AccessToken.getCurrentAccessToken();

        AppEventsLogger.activateApp(this);
        loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {

                Toast.makeText(getApplicationContext(), "Logged in with fb", Toast.LENGTH_SHORT).show();

                System.out.println("onSuccess");


                String accessToken = loginResult.getAccessToken().getToken();
                Log.i("", accessToken);

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

                    @Override
                    public void onCompleted(JSONObject object, GraphResponse response) {
                        Log.i("LoginActivity", response.toString());
                        // Get facebook data from login
                        Bundle bFacebookData = getFacebookData(object);
                        mail_id= bFacebookData.getString("email");
                        prof_pic= bFacebookData.getString("profile_pic");
                        f_name=bFacebookData.getString("first_name");
                        l_name=bFacebookData.getString("last_name");
                        bFacebookData.putString("img",prof_pic);
                        bFacebookData.putString("mail_id",mail_id);
                        bFacebookData.putString("fname",f_name);
                        bFacebookData.putString("lname",l_name);


                        Intent i = new Intent(LogActivity.this, HomeActivity.class);
//
                            i.putExtras(bFacebookData);
                            startActivity(i);
                        //
                        Toast.makeText(getApplicationContext(),mail_id,Toast.LENGTH_LONG).show();



                    }
                });
                Bundle parameters = new Bundle();
                parameters.putString("fields", "id, first_name, last_name, email,gender, birthday, location"); // Parámetros que pedimos a facebook
                request.setParameters(parameters);
                request.executeAsync();

            }

            @Override
            public void onCancel() {
                Toast.makeText(getApplicationContext(), "Log in Cancelled..!!", Toast.LENGTH_SHORT).show();

            }

            @Override
            public void onError(FacebookException error) {
                Toast.makeText(getApplicationContext(), "Error in log in,error is : " + error, Toast.LENGTH_SHORT).show();

            }

        });


    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        callbackManager.onActivityResult(requestCode, resultCode, data);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        accessTokenTracker.stopTracking();
    }

    private Bundle getFacebookData(JSONObject object) {

        try {
            Bundle bundle = new Bundle();
            String id = object.getString("id");

            try {
                URL profile_pic = new URL("https://graph.facebook.com/" + id + "/picture?width=200&height=150");
                Log.i("profile_pic", profile_pic + "");
                bundle.putString("profile_pic", profile_pic.toString());

            } catch (MalformedURLException e) {
                e.printStackTrace();
                return null;
            }

            bundle.putString("idFacebook", id);
            if (object.has("first_name"))
                bundle.putString("first_name", object.getString("first_name"));
            if (object.has("last_name"))
                bundle.putString("last_name", object.getString("last_name"));
            if (object.has("email"))
                bundle.putString("email", object.getString("email"));
            if (object.has("gender"))
                bundle.putString("gender", object.getString("gender"));
            if (object.has("birthday"))
                bundle.putString("birthday", object.getString("birthday"));
            if (object.has("location"))
                bundle.putString("location", object.getJSONObject("location").getString("name"));
            return bundle;
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return null;
    }

回答1:


Because i'm using the latest version of android-facebook-sdk,I have updated the facebook application in my phone and it solved the issue.Thanks everyone for the support.cheers!!




回答2:


In module based gradle file add following dependancy

compile 'com.facebook.android:facebook-android-sdk:4.7.0'

initialize facebook sdk before setContentView

FacebookSdk.sdkInitialize(YourActivity.this);

add following code in onCreate:

  callbackManager = CallbackManager.Factory.create();
        LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                if (CommonConstants.mDebug) Log.v(TAG, "onSuccess");

                final String accessToken = loginResult.getAccessToken().getToken();
                if (CommonConstants.mDebug) Log.v(TAG, accessToken);
                GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
                    @Override
                    public void onCompleted(JSONObject object, GraphResponse response) {

                    }
                });
                Bundle parameters = new Bundle();
                parameters.putString("fields", "id,first_name,last_name,email,gender, birthday");
                request.setParameters(parameters);
                request.executeAsync();
            }

            @Override
            public void onCancel() {
                if (CommonConstants.mDebug) Log.v(TAG, "onCancel");
                if (ViewDialog.kProgressHUD.isShowing()) {
                    ViewDialog.hideProgress();
                }
            }

            @Override
            public void onError(FacebookException error) {
                if (CommonConstants.mDebug) Log.v(TAG, error.toString());
            }
        });

add following in onActivityResult:

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


来源:https://stackoverflow.com/questions/38781501/login-to-my-app-using-facebook-error-when-using-facebook-app

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!