我正在尝试使用 WebView 实现 Facebook Like 按钮,它不是 Android Facebook SDK 的一部分。这个想法很简单。我使用 SDK 通过 SSO 登录用户帐户,因此如果用户已经登录到 android FB 应用程序,则用户无需再次输入登录名/密码。然后我想使用 WebView 来插入标准的 Like Button。
我已经拥有用户身份验证 token 、在墙上发送状态的权限等。问题是如何告诉 WebView 用户已经登录。我试图通过 FB 生成的这个 URL (webview.loadURL()) 使用 WebView(启用 JS):
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>
显然这是错误的/或者不足以以这种方式发送授权,因为在点击“赞”按钮后,用户将被重定向到 Web 浏览器中的登录页面。
所以问题是如何编辑此 URL 或如何在 WebView 中设置 cookie(在 CookieManager 中为 URL 设置什么以及哪些 cookie)以登录用户。
感谢您的帮助!
最佳答案
我不太确定 FB 应用程序访问 token 对于使用网络 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(如果有)不会丢失,以防类似页面发出重定向。
如果问题仍然存在,您也可以在将 url 加载到 WebView 之前尝试手动设置 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();
关于android - 带有 SDK 的 WebView 中的 Facebook 点赞按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12464570/