8

我正在尝试使用 WebView 实现不属于 Android Facebook SDK 的 Facebook Like 按钮。这个想法很简单。我使用 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>

显然,这是错误的/或不足以以这种方式发送自动化,因为在单击“赞”按钮后,用户将被重定向到 Web 浏览器中的登录页面。
所以问题是如何编辑此 URL 或如何在 WebView 中设置 cookie(在 CookieManager 中设置什么 URL 以及哪些 cookie)以登录用户。
感谢您的帮助!

4

2 回答 2

1

我不太确定 FB 应用程序访问令牌对于使用 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 中加载 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();
于 2012-09-22T17:08:02.653 回答
0

我认为这就是你要找的东西: https ://developers.facebook.com/docs/authentication/server-side/

如果我没看错的话,一旦你实现了 OAuth,你就可以使用 Graph API 来实现你正在寻找的“Like”按钮,因为你可以验证设备——而不仅仅是用户。

于 2012-09-24T19:11:14.257 回答