在Android Phonegap中从Facebook注销

在Android Phonegap中从Facebook注销,android,facebook,cordova,Android,Facebook,Cordova,我已经成功地安装了Jos定位的Facebook插件(https://github.com/jos3000/phonegap-plugins/tree/master/Android/Facebook)-但我似乎想不出一种方法来注销用户。当然,我可以告诉他们删除网站上的应用程序访问权限,然后再次尝试登录并单击“不是你吗?”但我真的更希望有一个JS功能来为我做这件事 有人能提供一些指导吗?我已经查看了这些文件,看起来在facebook.java中有一种方法可以做到这一点,但我只需要将一些东西组合起来,

我已经成功地安装了Jos定位的Facebook插件(https://github.com/jos3000/phonegap-plugins/tree/master/Android/Facebook)-但我似乎想不出一种方法来注销用户。当然,我可以告诉他们删除网站上的应用程序访问权限,然后再次尝试登录并单击“不是你吗?”但我真的更希望有一个JS功能来为我做这件事

有人能提供一些指导吗?我已经查看了这些文件,看起来在facebook.java中有一种方法可以做到这一点,但我只需要将一些东西组合起来,将其连接到webview。我不能这样做:)有人能帮忙吗?

在FacebookAuth.Java文件中 将此附加到[switch case部分中的]execute方法

else if (action.equals("performLogout")){
this.performLogout(first);}
//将此方法添加到FacebookAuth.java类

 public void performLogout(final String appid) {
    Log.d("PhoneGapLog", "LOGOUT");
    final FacebookAuth fba = this;
    Runnable runnable = new Runnable() {
        public void run() {
            fba.mFb = new Facebook(appid);
            fba.mFb.setPlugin(fba);
            try {
                fba.mFb.logout((Activity) fba.ctx);
                fba.success(new PluginResult(PluginResult.Status.OK, ""), fba.callback);
            } catch (MalformedURLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        };
    };
    this.ctx.runOnUiThread(runnable);
}
//在facebook.js文件中添加以下部分

Facebook.prototype.Logout = function(app_id,callback){
PhoneGap.exec(callback,null, "FacebookAuth", "performLogout", [app_id]); };
//在页面中添加以下代码

function LogoutClick() //on logout click
{   
    appId = "123" ; //your app Id
    window.plugins.facebook.Logout(appId,CompleteLogout);
}   

function CompleteLogout() //call back function
{
    //do some logic for callback
}
//享受

在FacebookAuth.Java文件中 将此附加到[switch case部分中的]execute方法

else if (action.equals("performLogout")){
this.performLogout(first);}
//将此方法添加到FacebookAuth.java类

 public void performLogout(final String appid) {
    Log.d("PhoneGapLog", "LOGOUT");
    final FacebookAuth fba = this;
    Runnable runnable = new Runnable() {
        public void run() {
            fba.mFb = new Facebook(appid);
            fba.mFb.setPlugin(fba);
            try {
                fba.mFb.logout((Activity) fba.ctx);
                fba.success(new PluginResult(PluginResult.Status.OK, ""), fba.callback);
            } catch (MalformedURLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        };
    };
    this.ctx.runOnUiThread(runnable);
}
//在facebook.js文件中添加以下部分

Facebook.prototype.Logout = function(app_id,callback){
PhoneGap.exec(callback,null, "FacebookAuth", "performLogout", [app_id]); };
//在页面中添加以下代码

function LogoutClick() //on logout click
{   
    appId = "123" ; //your app Id
    window.plugins.facebook.Logout(appId,CompleteLogout);
}   

function CompleteLogout() //call back function
{
    //do some logic for callback
}

//享受

此解决方案是禁用Facebook插件中的单点登录功能

在FaceBook.java文件中


授权方法[2重载]中的默认\u AUTH\u活动\u代码替换为强制对话框\u AUTH

此解决方案是禁用Facebook插件中的单点登录功能

在FaceBook.java文件中


授权方法[2重载]中的默认\u AUTH\u活动\u代码替换为强制\u对话框\u AUTH

谢谢穆罕默德!看起来此方法正在调用,这是安全的注销方式吗?Facebook目前正在反对这种方法。还有,我不确定它是否有效。。。我认为这应该使我的访问令牌过期,并使我需要重新请求一个?无论出于什么原因,它都无法工作,而且我对Java了解不够,无法进行故障排除。有没有办法让回调显示Facebook的响应?这可能有助于我排除故障。嗨,Henry,这不完全是它的工作原理,它只是清除你的应用程序facebook cookies,以便下次你需要登录时,facebook会向你显示电子邮件/密码表单。它不会调用facebook API,因此,你已从应用程序本身注销,如果你能告诉我它对你有什么作用,我的意思是在你尝试注销然后再次登录后,因为这个插件中有一个选项,可以使用储存在facebook独立应用程序中的电子邮件/密码,你可以禁用它,我将发布修复程序以禁用此选项,并仅使用存储在应用程序中的数据。我将在下面发布如何禁用此插件中的单点登录功能,请尝试并让我知道谢谢你Mohamed!看起来此方法正在调用,这是安全的注销方式吗?Facebook目前正在反对这种方法。还有,我不确定它是否有效。。。我认为这应该使我的访问令牌过期,并使我需要重新请求一个?无论出于什么原因,它都无法工作,而且我对Java了解不够,无法进行故障排除。有没有办法让回调显示Facebook的响应?这可能有助于我排除故障。嗨,Henry,这不完全是它的工作原理,它只是清除你的应用程序facebook cookies,以便下次你需要登录时,facebook会向你显示电子邮件/密码表单。它不会调用facebook API,因此,你已从应用程序本身注销,如果你能告诉我它对你有什么作用,我的意思是在你尝试注销然后再次登录后,因为这个插件中有一个选项,可以使用储存在facebook独立应用程序中的电子邮件/密码,你可以禁用它,我将发布修复程序以禁用此选项,并仅使用应用程序中存储的数据。我将在下面发布如何禁用此插件中的单点登录功能,请尝试并让我知道!此代码用于强制非SSO登录,这是一个不错的选择。但我仍然无法让下面的代码正常工作。我得到了成功回调的工作-但它实际上没有做任何事情。我可能知道我为什么这么想——我的应用程序所做的就是捕获令牌并用它打电话。由于您的方法不会撤销对应用程序的访问,因此清除任何缓存数据不会引发重新登录。我想我只是想让它保持原样,并指示用户删除我桌面上的应用程序。除非你另有建议?谢谢穆罕默德!此代码用于强制非SSO登录,这是一个不错的选择。但我仍然无法让下面的代码正常工作。我得到了成功回调的工作-但它实际上没有做任何事情。我可能知道我为什么这么想——我的应用程序所做的就是捕获令牌并用它打电话。由于您的方法不会撤销对应用程序的访问,因此清除任何缓存数据不会引发重新登录。我想我只是想让它保持原样,并指示用户删除我桌面上的应用程序。除非你有其他建议?嗨,亨利,我在facebook上登录有问题。我不认为你在登录上有任何问题,所以你可以发布你用于登录的代码。嗨,亨利,我在facebook上登录有问题。我不认为你在登录上有任何问题,所以你可以发布你登录时使用的代码。