在Android Phonegap中从Facebook注销
我已经成功地安装了Jos定位的Facebook插件(https://github.com/jos3000/phonegap-plugins/tree/master/Android/Facebook)-但我似乎想不出一种方法来注销用户。当然,我可以告诉他们删除网站上的应用程序访问权限,然后再次尝试登录并单击“不是你吗?”但我真的更希望有一个JS功能来为我做这件事 有人能提供一些指导吗?我已经查看了这些文件,看起来在facebook.java中有一种方法可以做到这一点,但我只需要将一些东西组合起来,将其连接到webview。我不能这样做:)有人能帮忙吗?在FacebookAuth.Java文件中 将此附加到[switch case部分中的]execute方法在Android Phonegap中从Facebook注销,android,facebook,cordova,Android,Facebook,Cordova,我已经成功地安装了Jos定位的Facebook插件(https://github.com/jos3000/phonegap-plugins/tree/master/Android/Facebook)-但我似乎想不出一种方法来注销用户。当然,我可以告诉他们删除网站上的应用程序访问权限,然后再次尝试登录并单击“不是你吗?”但我真的更希望有一个JS功能来为我做这件事 有人能提供一些指导吗?我已经查看了这些文件,看起来在facebook.java中有一种方法可以做到这一点,但我只需要将一些东西组合起来,
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上登录有问题。我不认为你在登录上有任何问题,所以你可以发布你登录时使用的代码。