Android 带有SDK的WebView中类似Facebook的按钮

Android 带有SDK的WebView中类似Facebook的按钮,android,facebook,facebook-like,Android,Facebook,Facebook Like,我正在尝试实现类似Facebook的按钮,它不是使用WebView的Android Facebook SDK的一部分。这个想法很简单。我使用SDK使用SSO登录用户帐户,所以如果用户已经登录android FB应用程序,则用户无需再次键入登录/密码。然后我想使用WebView插入标准按钮。 我已经拥有用户身份验证令牌、在墙上发送状态的权限等。问题是如何告诉WebView用户已经登录。我试图将WebView(启用JS)与FB生成的URL(WebView.loadURL())一起使用: http:/

我正在尝试实现类似Facebook的按钮,它不是使用WebView的Android Facebook SDK的一部分。这个想法很简单。我使用SDK使用SSO登录用户帐户,所以如果用户已经登录android FB应用程序,则用户无需再次键入登录/密码。然后我想使用WebView插入标准按钮。
我已经拥有用户身份验证令牌、在墙上发送状态的权限等。问题是如何告诉WebView用户已经登录。我试图将WebView(启用JS)与FB生成的URL(WebView.loadURL())一起使用:

http://www.facebook.com/plugins/like.php?href=myurl&send=false&layout=button_count&width=450&show_faces=true&action=like&colorscheme=light&font&height=21&appId=myId"
            + "&token=" + mFacebook.getAccessToken()+"&expires="+mFacebook.getAccessExpires(); //(or auth_token instead)<br>
http://www.facebook.com/plugins/like.php?href=myurl&send=false&layout=button_count&width=450&show_faces=true&action=like&colorscheme=light&font&height=21&appId=myId"
+“&token=“+mFacebook.getAccessToken()+”&expires=“+mFacebook.getAccessExpires();/(或改为身份验证令牌)
显然,这是错误的/或不足以以这种方式发送自动化,因为在单击“Like”按钮后,用户将被重定向到web浏览器中的登录页面。
因此,问题是如何编辑此URL或如何在WebView中设置用户登录的Cookie(CookieManager中的URL设置内容以及Cookie设置内容)。

感谢您的帮助!

我不太确定FB app access token是否适用于使用web api,但让我们试试看

首先,确保您正在为您的WebView实例实际使用Cookie:

CookieManager.getInstance().setAcceptCookies(true);
我不确定facebook重定向页面是否会尝试设置Cookie,所以请尝试一下,看看它是否能做到:

webview.setWebViewClient(new WebViewClient() {  
  @Override  
  public boolean shouldOverrideUrlLoading(WebView view, String url)  
  {  
    view.loadUrl(url);  
    return true;
  }  
});
这将迫使您的WebView打开其内部的链接,这样Cookie(如果有的话)就不会在类似页面发出重定向时丢失

如果问题仍然存在,您也可以尝试在Web视图中加载url之前通过执行此操作手动设置Cookie:

// This just initializes the sync manager, do it once
CookieSyncManager.createInstance(this);

CookieManager.getInstance().setCookie("facebook.com", "token="
        + mFacebook.getAccessToken() + "; domain=facebook.com");
CookieSyncManager.getInstance().sync();

我想这就是你想要的:


如果我没有看错的话,一旦你实现了OAuth,你就可以使用Graph API来实现你想要的“喜欢”按钮,因为你可以验证设备,而不仅仅是用户。

不幸的是,它不起作用。我看到的是,在WebView中有一组不同的cookie(不同的名称)如果我使用WebView登录到FB.So中,那么令牌/auth_令牌(我不知道哪个应该是正确的,但尝试了两者)未被FB使用或未被FB检查。哦,那一定是FB的web api有意有一个单独的身份验证过程…尝试寻找与FB集成的开源项目,看看它们是如何处理这个特定问题的。这就是为什么,我在这里问。我没有找到任何可以像按钮一样处理的原因。现在我正在尝试在WebView的内部完成整个过程o用户将不得不写下他的登录名/密码。是的,很遗憾我们无法以这种方式工作。尽管问题很好。我现在有很多事情要做,但我稍后会再谈,这也有点考虑到我现在正在进行的项目。如果你能通过cookies解决它,请告诉我。现在我正在尝试g使用Open Graph API和我自己的Like按钮来解决这个问题。但我遇到了类似的问题:这并不是我问题的答案。你的建议可能是一种可能的方法,但仍然是不同的方法。这里描述:。我想用当前的Like按钮来实现所有功能,但不是从一开始就这么做。太旧了但是如果有人仍然需要修复这个问题,你可以使用我的库,阅读这里:可能的副本