[英]Facebook like button in WebView with SDK
我正在嘗試使用WebView實現不屬於Android Facebook SDK的Facebook Like按鈕。 這個想法很簡單。 我使用SDK使用SSO登錄到用戶帳戶,因此如果用戶已經在android FB應用程序中登錄,則無需再次輸入登錄名/密碼。 然后,我想使用WebView插入標准的“贊”按鈕。
我已經具有用戶身份驗證令牌,在牆上發送狀態的權限等。問題是如何告訴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應用程序訪問令牌對於使用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(如果有)不會丟失。
如果問題仍然存在,您還可以嘗試執行以下操作來手動設置cookie,然后再將其加載到WebView中:
// 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();
我認為這就是您要尋找的: https : //developers.facebook.com/docs/authentication/server-side/
如果我沒看錯,那么實現OAuth后,就可以使用Graph API來實現所需的“贊”按鈕,因為您可以對設備進行身份驗證-而不僅僅是用戶。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.