8

WebView を使用して、Android Facebook SDK の一部ではない Facebook Like ボタンを実装しようとしています。アイデアはとてもシンプルです。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>

明らかに、これは間違っているか、この方法で承認を送信するのに十分ではありません。[いいね!] ボタンをクリックすると、ユーザーは 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 を使用して、ユーザーだけでなくデバイスを認証できるため、探している「いいね」ボタンを実装できます。

于 2012-09-24T19:11:14.257 に答える