Facebook喜欢带Web的WebView按钮

时间:2012-09-17 17:47:33

标签: android facebook facebook-like

我正在尝试实施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)以便用户签名。
谢谢你的帮助!

2 个答案:

答案 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来实现您正在寻找的“赞”按钮,因为您可以对设备进行身份验证 - 而不仅仅是用户。