Android facebook登录小部件:org.json.JSONException

Android facebook登录小部件:org.json.JSONException,android,xml,json,facebook,Android,Xml,Json,Facebook,我试图在我的项目中学习和使用Facebook SDK, 首先,我得到: com.facebook.widget.loginbutton未能实例化 然后我开始得到: activity_main.xml:org.json.JSONException 无论何时启动应用程序,我都会得到: 05-05 23:45:44.180: E/AndroidRuntime(31957): FATAL EXCEPTION: AsyncTask #1 05-05 23:45:44.180: E/AndroidRunti

我试图在我的项目中学习和使用Facebook SDK, 首先,我得到: com.facebook.widget.loginbutton未能实例化

然后我开始得到:

activity_main.xml:org.json.JSONException 无论何时启动应用程序,我都会得到:

05-05 23:45:44.180: E/AndroidRuntime(31957): FATAL EXCEPTION: AsyncTask #1
05-05 23:45:44.180: E/AndroidRuntime(31957): java.lang.RuntimeException: An error occured while executing doInBackground()
05-05 23:45:44.180: E/AndroidRuntime(31957):    at android.os.AsyncTask$3.done(AsyncTask.java:299)
05-05 23:45:44.180: E/AndroidRuntime(31957):    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
05-05 23:45:44.180: E/AndroidRuntime(31957):    at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
05-05 23:45:44.180: E/AndroidRuntime(31957):    at java.util.concurrent.FutureTask.run(FutureTask.java:239)
05-05 23:45:44.180: E/AndroidRuntime(31957):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
05-05 23:45:44.180: E/AndroidRuntime(31957):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
05-05 23:45:44.180: E/AndroidRuntime(31957):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
05-05 23:45:44.180: E/AndroidRuntime(31957):    at java.lang.Thread.run(Thread.java:841)
05-05 23:45:44.180: E/AndroidRuntime(31957): Caused by: java.lang.NullPointerException
05-05 23:45:44.180: E/AndroidRuntime(31957):    at java.util.concurrent.ConcurrentHashMap.containsKey(ConcurrentHashMap.java:911)
05-05 23:45:44.180: E/AndroidRuntime(31957):    at com.facebook.internal.Utility.queryAppSettings(Utility.java:372)
05-05 23:45:44.180: E/AndroidRuntime(31957):    at com.facebook.widget.LoginButton$1.doInBackground(LoginButton.java:667)
05-05 23:45:44.180: E/AndroidRuntime(31957):    at com.facebook.widget.LoginButton$1.doInBackground(LoginButton.java:1)
05-05 23:45:44.180: E/AndroidRuntime(31957):    at android.os.AsyncTask$2.call(AsyncTask.java:287)
05-05 23:45:44.180: E/AndroidRuntime(31957):    at java.util.concurrent.FutureTask.run(FutureTask.java:234)
05-05 23:45:44.180: E/AndroidRuntime(31957):    ... 4 more
我正在关注Facebook开发者的Facebook SDK文档,刚刚完成了步骤1,该应用程序的编写与Facebook文档的解释完全相同

打开xml文件时引发JSON错误:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <com.facebook.widget.LoginButton
        android:id="@+id/authButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="30dp"
        />

</LinearLayout>

并按图形布局


需要帮忙吗?在过去的12个小时里,我一直被这个问题困扰着

我也面临同样的问题。 在我的项目中下载Facebook的SDK 3.14并更新SDK后,发生了相同的错误。 我曾多次尝试清理该项目并重新构建,但均未成功

因此,我再次阅读了文章“Getting Started”(),我发现了以下信息:

您必须取消选择“将项目复制到工作区”选项,以便每个示例项目保留对相邻SDK的正确引用。但是,这意味着Eclipse会在SDK安装中创建指向该项目的链接,而不是复制该项目

因此,如果已经导入,请尝试删除Facebook SDK和您工作区的示例,然后在取消选中“将项目复制到wordspace”的情况下再次导入。 引用Facebook的SDK并重新启动Eclipse


这对我适用。

更改应用程序清单文件

 <activity
        android:name="com.example.LoginActivity"
        android:label="@string/app_name" 
        android:parentActivityName="com.example.MainActivity" >


 </activity>
 <activity android:name="com.facebook.LoginActivity"
              android:theme="@android:style/Theme.Translucent.NoTitleBar"
              android:label="@string/app_name" />
    <meta-data android:name="com.facebook.sdk.ApplicationId"   android:value="@string/app_id"/>
Facebook开发者网站上的
页面,复制应用程序id,然后在
res/strings.xml
文件中创建字符串资源


你的应用程序ID

@badredine它对我仍然不起作用,登录小部件本身在xml中引发异常。请注意,硬编码应用程序ID也不起作用。需要创建字符串资源。添加元数据为我修复了它。一个区别是我必须添加com.facebook.facebook活动,而不是com.facebook.LoginActivity