java - 在 Facebook 登录中取消,抛出 java.lang.RunTimeException 告诉 sdks 未初始化

标签 java android facebook

我在应用程序中使用 Facebook 登录时遇到困难。当用户首次使用手机中 native 安装的应用程序登录时授权我的应用程序时按下取消时,就会发生这种情况。

由于我的应用程序的登录位置位于 fragment 中,因此我所做的就是当用户单击登录时将控件发送到另一个 Activity ,并从那里开始,我执行所有回调。我以编程方式单击按钮以获取回电

我正在通过以下代码初始化应用程序

    super.onCreate(savedInstanceState);
    FacebookSdk.sdkInitialize(FacebookVirtualActivity.this);
    setContentView(R.layout.activity_facebook_virtual);

loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
        Log.v("ONMESSAGE", "Data Arived");
}
        @Override
        public void onCancel(LoginResult loginResult) {
        Log.v("ONMESSAGE", "Login cancelled");
}

现在,当用户取消登录时,我得到以下堆栈跟踪

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=129742, result=-1, data=Intent { (has extras) }} to activity {com.release.goquest/com.facebook.FacebookActivity}: The SDK has not been initialized, make sure to call FacebookSdk.sdkInitialize() first.

我不确定这是否与初始化有关,因为按确认键正在返回数据。

最佳答案

更新:

public class MainActivity extends AppCompatActivity {

    private Button facebook;
    private LoginManager loginManager;
    private CustomFacebookCallback callback;
    private CallbackManager callbackManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Facebook initialize
        FacebookSdk.sdkInitialize(MainActivity.this);
        FacebookSdk.addLoggingBehavior(LoggingBehavior.GRAPH_API_DEBUG_INFO);
        FacebookSdk.addLoggingBehavior(LoggingBehavior.DEVELOPER_ERRORS);
        FacebookSdk.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS);
        FacebookSdk.addLoggingBehavior(LoggingBehavior.INCLUDE_RAW_RESPONSES);

        setContentView(R.layout.activity_main);

        // Init button
        facebook = (Button) findViewById(R.id.facebook);

        // Instantiate parts and variables
        callback = new CustomFacebookCallback();

        // Callback Manager initialize
        callbackManager = CallbackManager.Factory.create();

        //===================
        // Facebook Login
        //===================

        // 1) Permissions
        final ArrayList<String> permissions = new ArrayList<String>();
        permissions.add("email");
        permissions.add("public_profile");
        permissions.add("user_friends");

        // 2) Set login function to button
        facebook.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                loginManager = LoginManager.getInstance();
                loginManager.logInWithReadPermissions(MainActivity.this, permissions);
                loginManager.registerCallback(callbackManager, callback);
            }
        });
    }

    private class CustomFacebookCallback implements FacebookCallback<LoginResult> {

        @Override
        public void onSuccess(LoginResult loginResult) {
            Log.d("Facebook", "Success!");
        }

        @Override
        public void onCancel() {
            Log.d("Facebook", "Canceled!");
        }

        @Override
        public void onError(FacebookException e) {
            Log.e("Facebook", "Error!");
        }
    }

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

上面的代码与调用的 onCancel() 一起使用。你可以尝试引用一下。

关于java - 在 Facebook 登录中取消,抛出 java.lang.RunTimeException 告诉 sdks 未初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33776973/

相关文章:

java - Android模糊动态/滚动内容

java - 如何使用java将阿拉伯语单词插入mysql数据库

java - 在java中按字符拆分字符串

android - ListFragment 中的自定义 ArrayAdapter

android - OpenCV JavaCamera 错误? (Nexus 7 上的 OpenCV 4 Android)

javascript - 在多个域上使用 facebook 应用程序 ID

Facebook 发送按钮忽略 OG 元标签

iphone - 使用 xmppframework 在 iphone 上进行 facebook 聊天

java - 是否存在依赖 Artifact 的 Maven "compiler-only"范围

Java - 修改类以计算创建的对象总数