簡體   English   中英

使用SDK的WebView中的Facebook贊按鈕

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM