Android 安卓和Facebook“;例如;使用webview的按钮-需要登录

Android 安卓和Facebook“;例如;使用webview的按钮-需要登录,android,facebook-graph-api,webview,facebook-like,Android,Facebook Graph Api,Webview,Facebook Like,我已经在我的Android应用程序中添加了一个webview,这样用户就可以喜欢特定的Facebook页面。我使用webview完成了这项工作,正如我在这里和其他地方读到的那样,Graph API不允许用户喜欢特定的Facebook页面 CookieManager cookieManager = CookieManager.getInstance(); String cookieString = cookieManager.getCookie("m.facebook.com"); CookieS

我已经在我的Android应用程序中添加了一个webview,这样用户就可以喜欢特定的Facebook页面。我使用webview完成了这项工作,正如我在这里和其他地方读到的那样,Graph API不允许用户喜欢特定的Facebook页面

CookieManager cookieManager = CookieManager.getInstance();
String cookieString = cookieManager.getCookie("m.facebook.com");
CookieStore mCookieStore = new BasicCookieStore();
mCookieStore.setCookies(cookieString, ".facebook.com", "//");
mCookieStore.sync();
但是,webview要求用户在第一次打开webview时登录Facebook,即使他们已经在设备浏览器中登录了Facebook应用程序(如果已安装)或touch.Facebook.com

CookieManager cookieManager = CookieManager.getInstance();
String cookieString = cookieManager.getCookie("m.facebook.com");
CookieStore mCookieStore = new BasicCookieStore();
mCookieStore.setCookies(cookieString, ".facebook.com", "//");
mCookieStore.sync();
有没有办法避免登录?例如,我可以通过任何方式将任何Facebook cookie从浏览器导入我的应用程序吗

CookieManager cookieManager = CookieManager.getInstance();
String cookieString = cookieManager.getCookie("m.facebook.com");
CookieStore mCookieStore = new BasicCookieStore();
mCookieStore.setCookies(cookieString, ".facebook.com", "//");
mCookieStore.sync();
如果我将Graph API添加到我的应用程序中,并将应用程序的密钥哈希保存在Facebook上,那么一旦打开webview,用户还需要登录吗

CookieManager cookieManager = CookieManager.getInstance();
String cookieString = cookieManager.getCookie("m.facebook.com");
CookieStore mCookieStore = new BasicCookieStore();
mCookieStore.setCookies(cookieString, ".facebook.com", "//");
mCookieStore.sync();

感谢

一种方法是获取WebView cookie manager的实例并将其cookie复制到HTTP客户端cookie存储中,以便HTTP客户端在随后与Facebook通话时使用登录设置的cookie。像这样的

CookieManager cookieManager = CookieManager.getInstance();
String cookieString = cookieManager.getCookie("m.facebook.com");
CookieStore mCookieStore = new BasicCookieStore();
mCookieStore.setCookies(cookieString, ".facebook.com", "//");
mCookieStore.sync();
请注意,getCookie只获取cookie的name=value部分,因此您必须添加域名和路径,才能使cookie在HTTP客户端中工作

CookieManager cookieManager = CookieManager.getInstance();
String cookieString = cookieManager.getCookie("m.facebook.com");
CookieStore mCookieStore = new BasicCookieStore();
mCookieStore.setCookies(cookieString, ".facebook.com", "//");
mCookieStore.sync();

另一种方法是在Facebook SDK授权功能上使用单点登录(SSO)选项,如果Facebook应用程序存在并已登录,则无需用户登录。

谢谢Torid。我尝试过Facebook SDK,但它仍然需要你登录到Webview,所以我选择了另一种方法。basinbasin:你选择了什么方法?
CookieManager cookieManager = CookieManager.getInstance();
String cookieString = cookieManager.getCookie("m.facebook.com");
CookieStore mCookieStore = new BasicCookieStore();
mCookieStore.setCookies(cookieString, ".facebook.com", "//");
mCookieStore.sync();