Java 无法使用facebook按钮登录我的android应用程序

Java 无法使用facebook按钮登录我的android应用程序,java,android,Java,Android,已经有了我的应用程序的登录过程,但正在尝试与facebook graph api集成 如果我尝试使用FB登录,则应用程序不接受。帮助 这里我粘贴的FB按钮代码 case R.id.fbButton: authenticateOnFacebook(); sendFacebookIdToServer(APP_ID, getApplicationContext()); break; facebook的身份验证方法,在这里我也使用

已经有了我的应用程序的登录过程,但正在尝试与facebook graph api集成 如果我尝试使用FB登录,则应用程序不接受。帮助 这里我粘贴的FB按钮代码

case R.id.fbButton:
            authenticateOnFacebook();
            sendFacebookIdToServer(APP_ID, getApplicationContext());
            break;
facebook的身份验证方法,在这里我也使用getcredentials方法

public void authenticateOnFacebook()
     {
        try{
            String[] permissions={"user_birthday", "email"};
            facebook.authorize(this.activity, permissions, Facebook.FORCE_DIALOG_AUTH, new DialogListener() {

                @Override
                public void onFacebookError(FacebookError e) {
                }

                @Override
                public void onError(DialogError e) {
                }

                @Override
                public void onComplete(Bundle values) {
                    try{
                        String facebookId = getCredentials((String) values.get("access_token"));
                        sendFacebookIdToServer(facebookId, context);
                    } catch(Exception e){
                        e.printStackTrace();
                    }
                }

                @Override
                public void onCancel() {

                }
            });
        } catch(Exception e){
            e.printStackTrace();
        }
     }

     protected String getCredentials(String token) {
        JSONObject jObject=null;
        String facebookId = null; 

        Bundle params = new Bundle();
        params.putString(Facebook.TOKEN, token);

        try {
            jObject = new JSONObject(facebook.request("me", params));
        }catch(Exception e){
            e.printStackTrace();
        }

        if(jObject!=null)
        {
            try {  
                facebookId = jObject.getString("id");
            }catch(Exception e){
                e.printStackTrace();
            }
        }
        return facebookId;
    }
为了向我的服务器发送认证请求,我使用了这个方法

public void sendFacebookIdToServer(String facebookId, Context context){
        String accessToken = null;
        DatabaseHelper helper = new DatabaseHelper(context);
        DatabaseUtility dao = new DatabaseUtility(helper);
        try {
            accessToken = dao.getAccessToken();
        } catch (Exception e1) {
            e1.printStackTrace();
        }
        Map<String , String> params = new HashMap<String,String>();
        params.put(Constants.FACEBOOK_ID, facebookId);
        params.put(Constants.ACCESS_TOKEN_PARAM, accessToken);
        Status status = null;
        try {
            status = Utils.addFacebookAccount(params, context);
        } catch (NullPointerException e) {
            e.printStackTrace();
        } catch (JSONException e) {
            e.printStackTrace();
        }

        if((status != null) && (status.getStatus().equalsIgnoreCase(Constants.SUCCESS))){
            navigateNowLisnScreenWithSuccess();
        }
     }

    private void navigateNowLisnScreenWithSuccess() {
        // TODO Auto-generated method stub
        Intent i = new Intent(context,TabView.class);
        startActivity(i);   
    }
public void sendFacebookIdToServer(字符串facebookId,上下文){
字符串accessToken=null;
DatabaseHelper=新的DatabaseHelper(上下文);
DatabaseUtility dao=新的DatabaseUtility(助手);
试一试{
accessToken=dao.getAccessToken();
}捕获(异常e1){
e1.printStackTrace();
}
Map params=新的HashMap();
参数put(Constants.FACEBOOK\u ID,FACEBOOK ID);
参数put(常数.ACCESS_TOKEN_PARAM,accessToken);
状态=空;
试一试{
status=Utils.addFacebookAccount(参数,上下文);
}捕获(NullPointerException e){
e、 printStackTrace();
}捕获(JSONException e){
e、 printStackTrace();
}
if((status!=null)&&(status.getStatus().equalsIgnoreCase(Constants.SUCCESS))){
NavigateNowlisnsScreenWithSuccess();
}
}
private void NavigateNowlisnsScreenWithSuccess(){
//TODO自动生成的方法存根
意图i=新意图(上下文,TabView.class);
星触觉(i);
}
Logcat

01-16 21:40:26.098: E/Cursor(1299):     at android.view.View.performClick(View.java:2408)
01-16 21:40:26.108: E/Cursor(1299): Finalizing a Cursor that has not been deactivated or closed. database = /data/data/com.lisnx.activity/databases/lisnx.db, table = access_token, query = SELECT token FROM access_token
01-16 21:40:26.108: E/Cursor(1299): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
01-16 21:40:26.108: E/Cursor(1299):     at android.database.sqlite.SQLiteCursor.<init>(SQLiteCursor.java:210)
01-16 21:40:26.108: E/Cursor(1299):     at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:53)
01-16 21:40:26.108: E/Cursor(1299):     at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1345)
01-16 21:40:26.108: E/Cursor(1299):     at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1229)
01-16 21:40:26.108: E/Cursor(1299):     at com.lisnx.activity.LoginActivity.sendFacebookIdToServer(LoginActivity.java:223)
01-16 21:40:26.108: E/Cursor(1299):     at com.lisnx.activity.LoginActivity.onClick(LoginActivity.java:263)
01-16 21:40:26.108: E/Cursor(1299):     at android.view.View.performClick(View.java:2408)
01-16 21:40:26.108: E/Cursor(1299):     at android.view.View$PerformClick.run(View.java:8816)
01-16 21:40:26.108: E/Cursor(1299):     at android.os.Handler.handleCallback(Handler.java:587)
01-16 21:40:26.108: E/Cursor(1299):     at android.os.Handler.dispatchMessage(Handler.java:92)
01-16 21:40:26.108: E/Cursor(1299):     at android.os.Looper.loop(Looper.java:123)
01-16 21:40:26.108: E/Cursor(1299):     at android.app.ActivityThread.main(ActivityThread.java:4627)
01-16 21:40:26.108: E/Cursor(1299):     at java.lang.reflect.Method.invokeNative(Native Method)
01-16 21:40:26.108: E/Cursor(1299):     at java.lang.reflect.Method.invoke(Method.java:521)
01-16 21:40:26.108: E/Cursor(1299):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
01-16 21:40:26.108: E/Cursor(1299):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
01-16 21:40:26.108: E/Cursor(1299):     at dalvik.system.NativeStart.main(Native Method)
01-16 21:40:26.098:E/Cursor(1299):在android.view.view.performClick(view.java:2408)
01-16 21:40:26.108:E/游标(1299):结束尚未停用或关闭的游标。database=/data/data/com.lisnx.activity/databases/lisnx.db,table=access\u token,query=SELECT token FROM access\u token
01-16 21:40:26.108:E/Cursor(1299):android.database.sqlite.DatabaseObjectNotClosedException:应用程序未关闭在此打开的游标或数据库对象
01-16 21:40:26.108:E/Cursor(1299):位于android.database.sqlite.SQLiteCursor.(SQLiteCursor.java:210)
01-16 21:40:26.108:E/Cursor(1299):位于android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:53)
01-16 21:40:26.108:E/Cursor(1299):位于android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1345)
01-16 21:40:26.108:E/Cursor(1299):位于android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1229)
01-16 21:40:26.108:E/Cursor(1299):位于com.lisnx.activity.LoginActivity.sendFacebookIdToServer(LoginActivity.java:223)
01-16 21:40:26.108:E/Cursor(1299):位于com.lisnx.activity.LoginActivity.onClick(LoginActivity.java:263)
01-16 21:40:26.108:E/Cursor(1299):在android.view.view.performClick(view.java:2408)
01-16 21:40:26.108:E/Cursor(1299):在android.view.view$PerformClick.run(view.java:8816)
01-16 21:40:26.108:E/Cursor(1299):位于android.os.Handler.handleCallback(Handler.java:587)
01-16 21:40:26.108:E/Cursor(1299):位于android.os.Handler.dispatchMessage(Handler.java:92)
01-16 21:40:26.108:E/Cursor(1299):位于android.os.Looper.loop(Looper.java:123)
01-16 21:40:26.108:E/Cursor(1299):位于android.app.ActivityThread.main(ActivityThread.java:4627)
01-16 21:40:26.108:E/Cursor(1299):位于java.lang.reflect.Method.invokenactive(本机方法)
01-16 21:40:26.108:E/Cursor(1299):位于java.lang.reflect.Method.invoke(Method.java:521)
01-16 21:40:26.108:E/Cursor(1299):位于com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
01-16 21:40:26.108:E/Cursor(1299):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
01-16 21:40:26.108:E/光标(1299):在dalvik.system.NativeStart.main(本机方法)

您遇到了什么错误?您是否在u/r机器上尝试此操作?
E/Cursor(1299):在android.view.view.performClick(view.java:2408)01-16 21:40:26.108:E/Cursor(1299):完成尚未停用或关闭的光标。database=/data/data/com.lisnx.activity/databases/lisnx.db,table=access\u token,query=SELECT token FROM access\u token 01-16 21:40:26.108:E/Cursor(1299):android.database.sqlite.DatabaseObjectNotClosedException:应用程序没有关闭在此处打开的游标或数据库对象
是否关闭了数据库的游标?