In Android, why is Facebook signup not working if Facebook installed in the device already?

元气小坏坏 提交于 2019-12-11 18:41:56

问题


I have tried to use Facebook in my application, this works fine on device that doesn't have Facebook app installed. But this fails to give the session while there is Facebook already installed on the device.

public void facebookSignIn(CallbackContext callContext){
    try {
        isFacebookLogin = true;
        getActivity().runOnUiThread(new Runnable() {
            public void run() {
                mConnectionProgressDialog.show();               }
        });
        this.callbackContext = callContext;
        Session.openActiveSession(this, true, new Session.StatusCallback() {
            // callback when session changes state
            @Override
            public void call(Session session, SessionState state, Exception exception) {
                Log.d("facebook","session open");
                if (session.isOpened()) {
                    // make request to the /me API
                    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) {
                                String userID = user.getId();
                                callbackContext.success(userID);
                                Toast.makeText(MDLIVEMain.this, user.getName() + " is connected.", Toast.LENGTH_LONG).show();
                            } else {
                                // TODO: handle exception
                                callbackContext.error(MDLiveLocalizationSystem.localizedStringForKey("nat_authen_failure"));
                            }
                            getActivity().runOnUiThread(new Runnable() {
                                public void run() {
                                    mConnectionProgressDialog.dismiss();
                                }
                            });
                        }

                    }).executeAsync();
                }
            }
        });
    }catch (Exception e){
        e.printStackTrace();
        callbackContext.error(MDLiveLocalizationSystem.localizedStringForKey("nat_authen_failure"));
        GATrackingExceptions.trackExceptions(e.getLocalizedMessage(), MDLIVEMain.this);
        getActivity().runOnUiThread(new Runnable() {
            public void run() {
                mConnectionProgressDialog.dismiss();
            }
        });
    }
}

Here is onactivityResult code

  @Override
protected void onActivityResult(int requestCode, int responseCode, Intent intent) {
    try {
        CordovaPlugin callback = this.activityResultCallbacks;
        if (callback != null) {
            callback.onActivityResult(requestCode, responseCode, intent);
        }
        Log.d("isFacebookLogin",isFacebookLogin+"");
        if(isFacebookLogin){
            try {
                isFacebookLogin = false;
                Session.getActiveSession().onActivityResult(this, requestCode, responseCode, intent);
            }catch (Exception e){
                e.printStackTrace();
            }
        }else {
            if (requestCode == REQUEST_CODE_RESOLVE_ERR && responseCode == RESULT_OK) {
                mConnectionResult = null;
                mPlusClient.connect();
            }

            getActivity().runOnUiThread(new Runnable() {
                public void run() {
                    mConnectionProgressDialog.dismiss();
                }
            });

            if (requestCode == PASSCODE_RESULT_PAGE) {
                if (responseCode == RESULT_OK) {
                    activityVisible = true;
                    this.callbackContext.success(intent.getExtras().getString("passcode_pin"));
                } else {
                    this.callbackContext.success(intent.getExtras().getString("passcode_pin"));
                    isFromPasscodePage = true;
                }
            }
        }
    }catch (Exception e){
        e.printStackTrace();
    }
}

回答1:


I have answered for this type of (Hash for fb) issue here :

Facebook Login and Post To Wall works for first time only

Note: Fb gives issues bcz of not valid Hash, for that you have to generate a valid hash.



来源:https://stackoverflow.com/questions/25403424/in-android-why-is-facebook-signup-not-working-if-facebook-installed-in-the-devi

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