我正在尝试实施Facebook Like按钮,该按钮不是使用WebView的Android Facebook SDK的一部分。这个想法非常简单。我使用SDK使用SSO登录用户帐户,因此如果用户已登录android FB应用程序,则用户无需再次键入登录名/密码。然后我想使用WebView插入标准的Like按钮
我已经拥有用户身份验证令牌,在墙上发送状态的权限等。问题是如何告诉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>
显然这是错误的/或者不应该以这种方式发送自动化,因为在点击Like按钮后,用户被重定向到Web浏览器中的登录页面。
因此,问题是如何编辑此URL或如何在WebView中设置cookie(在CookieManager中设置为URL以及哪些cookie)以便用户签名。
谢谢你的帮助!
答案 0 :(得分:1)
我不太确定FB app访问令牌对于使用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(如果有)。
如果问题仍然存在,您还可以在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();
答案 1 :(得分:0)
我认为这正是您所寻找的:https://developers.facebook.com/docs/authentication/server-side/
如果我正确地阅读了这一点,那么一旦实施了OAuth,您就可以使用Graph API来实现您正在寻找的“赞”按钮,因为您可以对设备进行身份验证 - 而不仅仅是用户。