Facebook喜欢带Web的WebView按钮

War*_*ock 8 android facebook facebook-like

我正在尝试实现Facebook Like按钮,它不是使用WebView的Android Facebook SDK的一部分.这个想法非常简单.我使用SDK使用SSO登录用户帐户,因此如果用户已登录android FB应用程序,则用户无需再次键入登录名/密码.然后我想使用WebView插入标准的Like Button.
我已经拥有用户身份验证令牌,在墙上发送状态的权限等.问题是如何告诉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>
Run Code Online (Sandbox Code Playgroud)

显然这是错误的/或者不应该以这种方式发送自动化,因为在点击Like按钮后,用户被重定向到Web浏览器中的登录页面.
所以问题是如何编辑此URL或如何在WebView中设置cookie(在CookieManager中设置为URL以及哪些cookie)以便用户签名.
感谢您的帮助!

Iva*_*sov 1

我不太确定 FB 应用程序访问令牌对于使用 Web api 是否有效,但让我们尝试一下。

首先,确保您确实在 WebView 实例中使用 cookie:

CookieManager.getInstance().setAcceptCookies(true);
Run Code Online (Sandbox Code Playgroud)

我不确定 facebook 重定向页面是否会尝试设置 cookie,所以尝试一下,看看它是否能解决问题:

webview.setWebViewClient(new WebViewClient() {  
  @Override  
  public boolean shouldOverrideUrlLoading(WebView view, String url)  
  {  
    view.loadUrl(url);  
    return true;
  }  
});
Run Code Online (Sandbox Code Playgroud)

这将强制您的 WebView 打开自身内部的链接,因此 cookie(如果有)在类似页面发出重定向时不会丢失。

如果问题仍然存在,您还可以尝试在 WebView 中加载 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();
Run Code Online (Sandbox Code Playgroud)