Java Facebook登录应用程序在启动时崩溃

Java Facebook登录应用程序在启动时崩溃,java,android,facebook,facebook-graph-api,Java,Android,Facebook,Facebook Graph Api,从几个小时以来,我一直在尝试解决这个问题。我看过所有的解决方案,但都不适合我。请帮我解决这个问题 我正在尝试使用fb登录。我已经在开发者部分创建了一个应用程序,并在清单文件中更新了哈希键和应用程序id。XXX是我的应用程序id 舱单: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.ro

从几个小时以来,我一直在尝试解决这个问题。我看过所有的解决方案,但都不适合我。请帮我解决这个问题

我正在尝试使用fb登录。我已经在开发者部分创建了一个应用程序,并在清单文件中更新了哈希键和应用程序id。XXX是我的应用程序id

舱单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.robosoft.flappy">

<uses-permission android:name="android.permission.INTERNET"/>


<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>

    <activity android:name="com.facebook.FacebookActivity"
        android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
        android:theme="@android:style/Theme.Translucent.NoTitleBar"
        android:label="@string/app_name" />
    <provider android:authorities="com.facebook.app.FacebookContentProviderXXX"
        android:name="com.facebook.FacebookContentProvider"
        android:exported="true"/>

    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

日志:

01-22 16:24:22.875 2441-2479/com.robosoft.flappy E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #4<br/>
Process: com.robosoft.flappy, PID: 2441
java.lang.NullPointerException: Attempt to invoke virtual method 'int      java.lang.Object.hashCode()' on a null object reference
at java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:772)
at java.util.concurrent.ConcurrentHashMap.containsKey(ConcurrentHashMap.java:800)
at com.facebook.internal.Utility.queryAppSettings(Utility.java:825)
at com.facebook.login.widget.LoginButton$1.run(LoginButton.java:486)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
01-22 16:24:22.875 2441-2479/com.robosoft.flappy E/AndroidRuntime:FATAL EXCEPTION:AsyncTask#4
进程:com.robosoft.flappy,PID:2441 java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“int java.lang.Object.hashCode()” 位于java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:772) 位于java.util.concurrent.ConcurrentHashMap.containsKey(ConcurrentHashMap.java:800) 位于com.facebook.internal.Utility.queryAppSettings(Utility.java:825) 登录com.facebook.login.widget.LoginButton$1.run(LoginButton.java:486) 位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 运行(Thread.java:818)
主活动文件:

package com.robosoft.flappy;
import android.app.Dialog;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Html;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.facebook.AccessToken;
import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.FacebookSdk;
import com.facebook.GraphRequest;
import com.facebook.GraphResponse;
import com.facebook.login.LoginResult;
import com.facebook.login.widget.LoginButton;
import com.facebook.login.widget.ProfilePictureView;
import com.facebook.share.model.ShareLinkContent;
import com.facebook.share.widget.ShareDialog;

import org.json.JSONException;
import org.json.JSONObject;


public class MainActivity extends AppCompatActivity {
    CallbackManager callbackManager;
    Button share,details;
    ShareDialog shareDialog;
    LoginButton login;
    ProfilePictureView profile;
    Dialog details_dialog;
    TextView details_txt;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        FacebookSdk.sdkInitialize(getApplicationContext());
        setContentView(R.layout.activity_main);

        callbackManager = CallbackManager.Factory.create();
        login = (LoginButton)findViewById(R.id.login_button);
        profile = (ProfilePictureView)findViewById(R.id.picture);
        shareDialog = new ShareDialog(this);
        share = (Button)findViewById(R.id.share);
        details = (Button)findViewById(R.id.details);
        login.setReadPermissions("public_profile email");
        share.setVisibility(View.INVISIBLE);
        details.setVisibility(View.INVISIBLE);
        details_dialog = new Dialog(this);
        details_dialog.setContentView(R.layout.dialog_details);
        details_dialog.setTitle("Details");
        details_txt = (TextView)details_dialog.findViewById(R.id.details);
        details.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                details_dialog.show();
            }
        });


        if(AccessToken.getCurrentAccessToken() != null){
            RequestData();
            share.setVisibility(View.VISIBLE);
            details.setVisibility(View.VISIBLE);
        }
        login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(AccessToken.getCurrentAccessToken() != null) {
                    share.setVisibility(View.INVISIBLE);
                    details.setVisibility(View.INVISIBLE);
                    profile.setProfileId(null);
                }
            }
        });
        share.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                ShareLinkContent content = new ShareLinkContent.Builder().build();
                shareDialog.show(content);

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

                if(AccessToken.getCurrentAccessToken() != null){
                    RequestData();
                    share.setVisibility(View.VISIBLE);
                    details.setVisibility(View.VISIBLE);
                }
            }

            @Override
            public void onCancel() {

            }

            @Override
            public void onError(FacebookException exception) {
            }
        });

    }
    public void RequestData(){
        GraphRequest request = GraphRequest.newMeRequest(AccessToken.getCurrentAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
            @Override
            public void onCompleted(JSONObject object,GraphResponse response) {

                JSONObject json = response.getJSONObject();
                try {
                    if(json != null){
                        String text = "<b>Name :</b> "+json.getString("name")+"<br><br><b>Email :</b> "+json.getString("email")+"<br><br><b>Profile link :</b> "+json.getString("link");
                        details_txt.setText(Html.fromHtml(text));
                        profile.setProfileId(json.getString("id"));
                    }

                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        });
        Bundle parameters = new Bundle();
        parameters.putString("fields", "id,name,link,email,picture");
        request.setParameters(parameters);
        request.executeAsync();
    }

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

}
package com.robosoft.flappy;
导入android.app.Dialog;
导入android.content.Intent;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.text.Html;
导入android.view.view;
导入android.widget.Button;
导入android.widget.TextView;
导入com.facebook.AccessToken;
导入com.facebook.CallbackManager;
导入com.facebook.facebook回调;
导入com.facebook.facebook异常;
导入com.facebook.FacebookSdk;
导入com.facebook.GraphRequest;
导入com.facebook.GraphResponse;
导入com.facebook.login.LoginResult;
导入com.facebook.login.widget.LoginButton;
导入com.facebook.login.widget.ProfilePictureView;
导入com.facebook.share.model.ShareLinkContent;
导入com.facebook.share.widget.ShareDialog;
导入org.json.JSONException;
导入org.json.JSONObject;
公共类MainActivity扩展了AppCompatActivity{
CallbackManager CallbackManager;
按钮共享,详细信息;
共享对话框共享对话框;
登录按钮登录;
档案图片查看档案;
对话框详细信息\u对话框;
文本查看详细信息;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
sdkinInitialize(getApplicationContext());
setContentView(R.layout.activity_main);
callbackManager=callbackManager.Factory.create();
login=(LoginButton)findViewById(R.id.login_按钮);
profile=(ProfilePictureView)findViewById(R.id.picture);
shareDialog=新建shareDialog(此);
share=(按钮)findViewById(R.id.share);
详细信息=(按钮)findViewById(R.id.details);
login.setReadPermissions(“public_profile电子邮件”);
share.setVisibility(View.INVISIBLE);
细节。设置可见性(视图。不可见);
详细信息\u对话框=新建对话框(此对话框);
详细信息\u对话框.setContentView(R.layout.dialog\u详细信息);
details_dialog.setTitle(“详细信息”);
details_txt=(TextView)details_dialog.findviewbyd(R.id.details);
details.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
详细信息_dialog.show();
}
});
if(AccessToken.getCurrentAccessToken()!=null){
请求数据();
share.setVisibility(View.VISIBLE);
details.setVisibility(View.VISIBLE);
}
login.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
if(AccessToken.getCurrentAccessToken()!=null){
share.setVisibility(View.INVISIBLE);
细节。设置可见性(视图。不可见);
profile.setProfileId(空);
}
}
});
share.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
ShareLinkContent=新建ShareLinkContent.Builder().build();
显示(内容);
}
});
registerCallback(callbackManager,newfacebookcallback(){
@凌驾
成功时公共无效(LoginResult LoginResult){
if(AccessToken.getCurrentAccessToken()!=null){
请求数据();
share.setVisibility(View.VISIBLE);
details.setVisibility(View.VISIBLE);
}
}
@凌驾
公开作废{
}
@凌驾
public void onError(facebook异常){
}
});
}
public void RequestData(){
GraphRequest request=GraphRequest.NewMereRequest(AccessToken.getCurrentAccessToken(),new GraphRequest.GraphJSONObjectCallback()){
@凌驾
未完成公共无效(JSONObject对象,GraphResponse响应){
JSONObject json=response.getJSONObject();
试一试{
if(json!=null){
String text=“Name:”+json.getString(“Name”)+”

电子邮件:“+json.getString(“Email”)+”

配置文件链接:“+json.getString(“link”); details_txt.setText(Html.fromHtml(text)); setProfileId(json.getString(“id”); } }捕获(JSONException e){ e、 printStackTrace(); } } }); Bundle参数=新Bundle(); putString(“字段”、“id、名称、链接、电子邮件、图片”); 请求。设置参数(参数); request.executeAsync(); }