11

これは私が持っているものです:

static AccessToken accessToken = new DefaultFacebookClient().obtainExtendedAccessToken("<my app id>", "<my app secret>");
static FacebookClient client = new DefaultFacebookClient();
public static void main(String args[]) {
    System.out.print("Enter Your Status: ");
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    String status= null;

      try {
         userName = br.readLine();
         System.out.println("..........");
      } catch (IOException ioe) {
         System.out.println("!");
         System.exit(1);
      }

    FacebookType publishMessageResponse =
                client.publish("me/feed", FacebookType.class,
                Parameter.with("message", status));

したがって、最初の行はトークンを取得し、それを AccessToken 型として保存しますが、次の行はアクセストークンを文字列として提供する必要があり、変換できないため、それは私にとって何の役にも立ちません。ヘルプはありますか?

4

5 に答える 5

11

まず、アプリ トークンとユーザー トークンを混同しないでください (詳細)

ユーザートークンを取得するには、

  1. ユーザーが Facebook に対して認証を行い (詳細)、「コード」 (各ログイン要求に固有の暗号化された文字列) を受け取る方法を提供します。
  2. このコードを使用してユーザー トークンを取得します。

次の方法で、純粋な RestFB を使用してユーザー トークンを取得できます。

private FacebookClient.AccessToken getFacebookUserToken(String code, String redirectUrl) throws IOException {
    String appId = "YOUR_APP_ID";
    String secretKey = "YOUR_SECRET_KEY";

    WebRequestor wr = new DefaultWebRequestor();
    WebRequestor.Response accessTokenResponse = wr.executeGet(
            "https://graph.facebook.com/oauth/access_token?client_id=" + appId + "&redirect_uri=" + redirectUrl
            + "&client_secret=" + secretKey + "&code=" + code);

    return DefaultFacebookClient.AccessToken.fromQueryString(accessTokenResponse.getBody());
}

呼び出しは簡単です:

FacebookClient.AccessToken token = getFacebookUserToken(code, redirectUrl);
String accessToken = token.getAccessToken();
Date expires = token.getExpires();
于 2013-08-09T02:21:29.397 に答える
9

AccessToken.getAccessToken() が accessToken の文字列値を返すことについてジャックが言ったことに加えて、次のようDefaultFacebookClientに拡張することで 2 回インスタンス化することを避けることができます。DefaultFacebookClient

import com.restfb.DefaultFacebookClient;

public class LoggedInFacebookClient extends DefaultFacebookClient {

    public LoggedInFacebookClient(String appId, String appSecret) {
        AccessToken accessToken = this.obtainAppAccessToken(appId, appSecret);
        this.accessToken = accessToken.getAccessToken();
    }

}
于 2013-01-21T07:21:22.383 に答える
5

次のコードを試してください。

AccessToken accessToken = new DefaultFacebookClient().obtainAppAccessToken(appid,appsecret);
String token=accessToken.getAccessToken();
于 2013-06-17T07:33:26.147 に答える
1

restfb.FacebookClient.AccessToken ごと、 accessToken.getAccessToken() を呼び出すことができるはずです。これにより、探している文字列が返されるはずです。

于 2013-01-09T15:14:24.397 に答える
0

これはうまくいきます

AccessToken accessToken = new DefaultFacebookClient().obtainAppAccessToken("XXXX", "XXXX");
String token=accessToken.getAccessToken();
DefaultFacebookClient facebookClient = new DefaultFacebookClient(token);
于 2016-01-28T07:15:33.167 に答える