0

ユーザーが Facebook アカウントを使用してログオンできるようにするアプリを開発しています。私はRestFB(restfb.com)を使用しています。これまでのところ、問題なく実行される以下のコードを使用して Facebook 認証 API にアクセスできます。

try {
 FacesContext.getCurrentInstance().getExternalContext().redirect(FB_URL);
 } catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
 }

FB_URL には、ユーザー認証後に正しくリダイレ​​クトされている私の redirect_url が含まれています。認証はコードを返します。返されたコードを使用して、ACCESS_TOKEN. これを行う最善の方法は、リターン URL に実行するメソッドを含めることだと思います。このメソッドは、facebook へのリクエストがコード レスポンスとともに返されるとすぐに実行されます。また、これは URL からアクション メソッドを実行できる場合にのみ可能になると考えています。フィルターの使用について読んだことがありますが、まだ明確ではありません。どんな援助でも大歓迎です。

4

1 に答える 1

0

私はこれを行う方法を見つけました。使用する

<f:metadata>
    <f:viewParam name="code" value="#{loginBean.fbCode}" />
</f:metadata>

LoginBeanのsetFbCodeが実行されます。次に、以下に示すように、アクセストークンを取得するために使用するURLにこのコードを組み込みます。

if(this.fbCode != "") {
        TOKEN_URL = TOKEN_URL + fbCode + "&access_token=";
        System.out.println("FB Code = " + fbCode);
        try {
                        FacesContext.getCurrentInstance().getExternalContext().redirect(TOKEN_URL);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

そして、トークンを取得するには:

URL url = new URL(TOKEN_URL);
String token = IOUtils.toString(url.openStream());
this.fbAccessToken = token;

もちろん、try-catchブロックに囲まれています。ApacheのIOUtilsを使用して、トークンを文字列に読み込みます。

于 2012-05-29T13:51:11.183 に答える