Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Facebook登录无法使用空调用包调用LoginFragment_Android_Facebook_Android Facebook_Launchmode - Fatal编程技术网

Android Facebook登录无法使用空调用包调用LoginFragment

Android Facebook登录无法使用空调用包调用LoginFragment,android,facebook,android-facebook,launchmode,Android,Facebook,Android Facebook,Launchmode,我已将facebook登录添加到我的应用程序中 第一次我能够登录没有任何问题。但在登录之后,我就退出了。我在日志中发现了这个错误 E/LoginFragment: Cannot call LoginFragment with a null calling package. This can occur if the launchMode of the caller is singleInstance. 我搜索了一下谷歌。通过将launchmode设置为standard,解决了一些错误。我没有指

我已将facebook登录添加到我的应用程序中

第一次我能够登录没有任何问题。但在登录之后,我就退出了。我在日志中发现了这个错误

E/LoginFragment: Cannot call LoginFragment with a null calling package. This can occur if the launchMode of the caller is singleInstance.
我搜索了一下谷歌。通过将launchmode设置为standard,解决了一些错误。我没有指定任何启动模式。但我还是试着用它

<activity
     android:name=".activities.LoginActivity"
     android:launchMode="standard"/>
4我使用自定义按钮登录。当我点击fb登录按钮时。我正在使用这个代码

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

                    GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(),
                            new GraphRequest.GraphJSONObjectCallback() {
                                @Override
                                public void onCompleted(JSONObject object, GraphResponse response) {
                                    //My Stuff Here
                                }
                            });
                    Bundle parameters = new Bundle();

                    parameters.putString("fields", "id,name,email,gender,first_name,last_name,link,picture.type(large)");
                    request.setParameters(parameters);
                    request.executeAsync();
                }

                @Override
                public void onCancel() {
                    //Cancel Stuff
                }

                @Override
                public void onError(FacebookException exception) {
                    exception.printStackTrace();
                    //Error Stuff
                }
            });        LoginManager.getInstance().logInWithReadPermissions((AppCompatActivity)context,
            Arrays.asList("public_profile, email"));
6要注销,我使用了
LoginManager.getInstance().logout()

7但我尝试使用自定义按钮再次登录,调试指针指向行
LoginManager.getInstance().registerCallback()
,但回调的所有方法(
onSuccess(LoginResult LoginResult)
onError()
onError(FacebookException异常)
)都无法调用。我得到一个日志,上面写着
E/LoginFragment:cannotcallloginFragment与null调用包。如果调用方的启动模式为singleInstance,则可能发生这种情况。

更改此设置

LoginManager.getInstance().logInWithReadPermissions((AppCompatActivity)上下文,
asList(public_profile,email)

LoginManager.getInstance().logInWithReadPermissions(LoginActivity.this,

asList(public_profile,email)

首先,Facebook没有给出确切的异常细节

Sushobh Nadiger的回答帮助我解决了这个问题

我想将facebook登录代码与我的LoginActivity隔离开来,并将JSONObject返回给LoginActivity,因此我创建了一个名为SocialLogin.java的类来处理社交登录,并通过
LoginManager.getInstance().registerCallback(callbackManager,
新建FacebookCallback(){//More Stuff here}
并调用facebook登录
LoginManager.getInstance().logInWithReadPermissions()
有关详细信息,请参阅相关完整代码

这才是真正的问题。所以我在LoginActivity.java中调用了这些函数(registerCallback()和logInWithReadPermissions()),结果成功了。


然而,作为开发人员,我认为像facebook这样的公司应该给我们适当的错误,而不是像我这样的误导性错误,这样我们的宝贵时间就不会被浪费。

谢谢,你的回答帮助我抓住了这个问题。见下面我的回答。
LoginManager.getInstance().registerCallback(callbackManager,
            new FacebookCallback<LoginResult>() {
                @Override
                public void onSuccess(LoginResult loginResult) {

                    GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(),
                            new GraphRequest.GraphJSONObjectCallback() {
                                @Override
                                public void onCompleted(JSONObject object, GraphResponse response) {
                                    //My Stuff Here
                                }
                            });
                    Bundle parameters = new Bundle();

                    parameters.putString("fields", "id,name,email,gender,first_name,last_name,link,picture.type(large)");
                    request.setParameters(parameters);
                    request.executeAsync();
                }

                @Override
                public void onCancel() {
                    //Cancel Stuff
                }

                @Override
                public void onError(FacebookException exception) {
                    exception.printStackTrace();
                    //Error Stuff
                }
            });        LoginManager.getInstance().logInWithReadPermissions((AppCompatActivity)context,
            Arrays.asList("public_profile, email"));
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    callbackManager.onActivityResult(requestCode, resultCode, data);
}