用于 FB LOGIN 的 Android 应用程序不幸停止

Posted

技术标签:

【中文标题】用于 FB LOGIN 的 Android 应用程序不幸停止【英文标题】:Android App for FB LOGIN Unfortunately Stops 【发布时间】:2016-01-23 15:56:14 【问题描述】:

我尝试创建一个带有 FB 登录的 android 应用。我遵循以下指示:

http://code.tutsplus.com/tutorials/quick-tip-add-facebook-login-to-your-android-app--cms-23837

构建成功,但应用不幸停止。

我的logcat如下图:

致命异常:AsyncTask #2 进程:com.example.android.logintest,PID:2434 java.lang.NullPointerException:尝试调用虚拟方法'int 空对象引用上的 java.lang.Object.hashCode()' 在 java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:746) 在 java.util.concurrent.ConcurrentHashMap.containsKey(ConcurrentHashMap.java:774) 在 com.facebook.internal.Utility.queryAppSettings(Utility.java:823) 在 com.facebook.login.widget.LoginButton$1.run(LoginButton.java:489) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 在 java.lang.Thread.run(Thread.java:818)

主要活动如下:

    package com.example.android.logintest;

    import android.content.Intent;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.widget.TextView;

    import com.facebook.CallbackManager;
    import com.facebook.FacebookCallback;
    import com.facebook.FacebookException;
    import com.facebook.FacebookSdk;
    import com.facebook.login.LoginResult;
    import com.facebook.login.widget.LoginButton;


    public class MainActivity extends AppCompatActivity 

    private TextView info;
    private LoginButton loginButton;
    private CallbackManager callbackManager;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    
        super.onCreate(savedInstanceState);
        FacebookSdk.sdkInitialize(this.getApplicationContext());

        callbackManager = CallbackManager.Factory.create();
        setContentView(R.layout.main_activity);
        loginButton = (LoginButton) findViewById(R.id.login_button);
        loginButton.registerCallback(callbackManager, new           FacebookCallback<LoginResult>() 
            @Override
            public void onSuccess(LoginResult loginResult) 
                info.setText(
                        "User ID: "
                                + loginResult.getAccessToken().getUserId()
                                + "\n" +
                                "Auth Token: "
                                + loginResult.getAccessToken().getToken()
                );

            

            @Override
            public void onCancel() 
                info.setText("Login attempt canceled.");

            

            @Override
            public void onError(FacebookException e) 
                info.setText("Login attempt failed.");

            
        );

    


    protected void onActivityResult(int requestCode, int resultCode, Intent   data)
        
            super.onActivityResult(requestCode, resultCode, data);
            callbackManager.onActivityResult(requestCode, resultCode, data);

        

    @Override
    public boolean onCreateOptionsMenu(Menu menu) 
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    

    @Override
    public boolean onOptionsItemSelected(MenuItem item) 
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) 
            return true;
        

        return super.onOptionsItemSelected(item);
    

【问题讨论】:

What is a Null Pointer Exception, and how do I fix it?的可能重复 你在 logcat 中有你的 hashkey 吗? 【参考方案1】:

重新检查您提供的link 中的第 4 步和第 5 步。

上面显示的 NullPointerException 通常在您没有在 AndroidManifest 应用程序元数据中提供应用程序的 applicationId 时出现

还要确保您已将 com.facebook.FacebookActivity 添加为清单中的另一个活动

【讨论】:

以上是关于用于 FB LOGIN 的 Android 应用程序不幸停止的主要内容,如果未能解决你的问题,请参考以下文章

FB.login 如果用户之前连接过应用程序,则区分成功登录和取消

iOS WebApp 的 FB.login 中断流程

共享对话框不适用于 Facebook 应用 [android]

Android跨进程通信

android中的跨进程是啥意思

Facebook (FB.login) 没有请求我的权限