gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 00:19:17 25 4
gpt4 key购买 nike

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

我第一次能够毫无问题地登录。但是登录后我注销了。我在 logcat 中收到此错误。

E/LoginFragment: Cannot call LoginFragment with a null calling package. This can occur if the launchMode of the caller is singleInstance.

我在谷歌上搜索了一下。通过将启动模式设置为标准来解决一些错误。我没有指定任何启动模式。但我还是尝试了

<activity
android:name=".activities.LoginActivity"
android:launchMode="standard"/>

但没有成功。

这是我的登录程序。

1 添加了 FB 依赖 compile 'com.facebook.android:facebook-android-sdk:[4,5)'

2 我在Application类的onCreate()super.onCreate()之后初始化FB sdk。 AppEventsLogger.activateApp(this);

3 在我的登录 Activity 中,在 Activity 的 onCreate() 上创建了 CallbackManager 实例。

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
callbackManager = CallbackManager.Factory.create();
setContentView(R.layout.activity_login);
}

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"));

5 我在 onActivityResult() 中注册了回调

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

6 为了注销,我使用了 LoginManager.getInstance().logOut()

7 但我尝试使用我的自定义按钮再次登录,调试指针转到 LoginManager.getInstance().registerCallback() 行,但没有任何方法 (onSuccess(LoginResult loginResult), onError(), onError(FacebookException exception)) 回调得到调用。我收到一条日志,上面写着 E/LoginFragment: Cannot call LoginFragment with a null calling package。如果调用者的 launchMode 是 singleInstance,就会发生这种情况。

最佳答案

改变这个

LoginManager.getInstance().logInWithReadPermissions((AppCompatActivity)context,
Arrays.asList("public_profile, email"));

LoginManager.getInstance().logInWithReadPermissions(LoginActivity.this,
Arrays.asList("public_profile, email"));

关于Android Facebook 登录无法使用空调用包调用 LoginFragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46603931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com