简体   繁体   English

在Android中使用Facebook登录时未调用onActivityResult

[英]onActivityResult is not calling while using facebook login in android

I have integrated Facebook and created app in Facebook developer account. 我已经整合了Facebook,并在Facebook开发者帐户中创建了应用。 I have registerd FBHelper activity in facebook developer account, Once i received data/facebook details , i used setResult method but it is not calling the onActivityResult() method of LoginActivity.java. 我已经在Facebook开发者帐户中注册了FBHelper活动,一旦接收到数据/ facebook详细信息,就使用了setResult方法,但它没有调用LoginActivity.java的onActivityResult()方法。

code: LoginAcitivity.java 代码:LoginAcitivity.java

 Intent intent = new Intent(LoginActivity.this, FBHelper.class);

                startActivityForResult(intent,2);

onActivityResult() of LoginActivity.java LoginActivity.java的onActivityResult()

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


       if (requestCode == 2 && resultCode == RESULT_OK) {

            String jsondata=data.getStringExtra("userProfile");
            try {


                JSONObject response = new JSONObject(jsondata);
                String email = (response.get("email").toString());
                String fname = (response.get("first_name").toString());
                String lname = (response.get("last_name").toString());
                String id = (response.get("id").toString());
                Toast.makeText(loginActivity,"facebook", Toast.LENGTH_SHORT).show();
                Social_Login(email, id, fname, lname, "facebook");

            } catch(Exception e){
                e.printStackTrace();
            }

        }
}

FBHelper.java FBHelper.java

public class FBHelper extends AppCompatActivity {
CallbackManager callbackManager;
private CallbackManager mFacebookCallbackManager;
private Context myActivity;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_fb_helper);
    try {
        FacebookSdk.sdkInitialize(getApplicationContext());
        AppEventsLogger.activateApp(this);
        callbackManager = CallbackManager.Factory.create();
        AccessToken accessToken = AccessToken.getCurrentAccessToken();
        boolean isLoggedIn = accessToken != null && !accessToken.isExpired();
       LoginManager.getInstance().logOut();
        LoginManager.getInstance().logInWithReadPermissions(FBHelper.this, Arrays.asList("public_profile", "email"));
        LoginManager.getInstance().setLoginBehavior(LoginBehavior.DEVICE_AUTH);


        LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                getUserDetails(loginResult);
            }

            @Override
            public void onCancel() {
                // App code
                Log.v("onCancel", "onCancel");
            }

            @Override
            public void onError(FacebookException exception) {
                // App code
                exception.printStackTrace();
                Log.v("onError", "CANCEL");
            }
        });
    } catch (Exception e) {
        e.printStackTrace();
    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    try {
        callbackManager.onActivityResult(requestCode, resultCode, data);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

protected void getUserDetails(LoginResult loginResult) {
    GraphRequest data_request = GraphRequest.newMeRequest(
            AccessToken.getCurrentAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
                @Override
                public void onCompleted(
                        JSONObject json_object, GraphResponse response) {
                    try {
                        Intent returnIntent = new Intent();
                        returnIntent.putExtra("userProfile", json_object.toString());
                        setResult(RESULT_OK, returnIntent);
                       // LoginManager.getInstance().logOut();
                        finish();
                    } catch (Exception e) {

                        e.printStackTrace();
                    }

                }

            });
    try {
        Bundle permission_param = new Bundle();
        permission_param.putString("fields", "id,name,email,picture.width(120).height(120)");
        data_request.setParameters(permission_param);
        data_request.executeAsync();

    } catch (Exception e) {
        e.printStackTrace();
    }

}

protected void onResume() {
    super.onResume();
    // Logs 'install' and 'app activate' App Events.
    AppEventsLogger.activateApp(this);
}

@Override
protected void onPause() {
    super.onPause();
    // Logs 'app deactivate' App Event.
    AppEventsLogger.deactivateApp(this);
}


@Override
protected void onDestroy() {
    super.onDestroy();
    //LoginManager.getInstance().logOut();
}

} }

Finally i got the solution, I started from scratch with another Activity and slowly duplicated the new activity till it matched the one that was breaking. 终于我找到了解决方案,我从头开始进行另一项活动,然后慢慢地复制了新活动,直到它与即将发生的活动相匹配为止。 In short, it was nothing to do with the Activity but the Android Manifest. 简而言之,除了Android Manifest之外,这与Activity无关。

In my Android Manifest, I had android:noHistory="true" on my LoginActivity which was crashing my app. 在我的Android清单中,我的LoginActivity上有android:noHistory =“ true”,这使我的应用程序崩溃了。 Once I removed it then it worked again. 一旦我删除它,然后它又可以工作了。

<activity
            android:name=".Activity.General.LoginActivity"
            android:noHistory="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

请尝试从FBHelper.java中删除onActivityResult方法

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

相关问题 Android Facebook登录onActivityResult - Android Facebook Login onActivityResult Android登录按钮不调用onActivityResult或回调方法 - Android Login button not calling onActivityResult or callback methods 为什么在使用Facebook登录按钮调用CallbackManager上的onActivityResult()后绝对没有任何反应? - Why absolutely nothing happens after calling onActivityResult() on the CallbackManager using the Facebook Login Button? 使用Facebook SDK登录导致onActivityResult错误 - Login using facebook sdk gives error on onActivityResult 在android中使用firebase登录facebook时出现InflateException - InflateException while login with facebook using firebase in android facebook android SSO完成,但活动关闭而不调用onActivityResult() - facebook android SSO completes, but activity closes without calling onActivityResult() 在Android上登录ActivityResult后,Facebook SDK应用程序崩溃 - Facebook SDK app crash after login onActivityResult Android 在Android中登录Facebook后,会话在OnActivityResult方法中为空 - Session is becoming null in OnActivityResult Method after login to Facebook in Android Facebook 和 Google+ 登录 Android 的 onActivityResult 代码 - onActivityResult code for both Facebook and Google+ Login in Android Android Facebook登录,onActivityResult中callbackManager尚未初始化 - Android Facebook login, callbackManager has not been initialized in onActivityResult
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM