Java RestFb无法从动作侦听器获取返回值

问题描述 投票:0回答:2

我试图从Facebook使用restfb api获取访问令牌一切正常,我可以打印访问令牌,但当我尝试返回它时,我得到一个空值..以下是代码

public String showLogin() {
DefaultFacebookClient facebookClient = new DefaultFacebookClient(Version.LATEST);
ScopeBuilder scopes = new ScopeBuilder();
String loadUrl = facebookClient.getLoginDialogUrl(appId, SUCCESS_URL, scopes);
webEngine.load(loadUrl + "&display=popup&response_type=code");
webEngine.getLoadWorker().stateProperty().addListener(
  (ObservableValue<? extends Worker.State> observable, Worker.State oldValue, Worker.State newValue) -> {
    if (newValue != Worker.State.SUCCEEDED) {
      return;
    }

    String myUrl = webEngine.getLocation();

    if ("https://www.facebook.com/dialog/close".equals(myUrl)) {
      System.out.println("dialog closed");
      System.exit(0);
    }
    String u="https://www.creativecorner7.com/";
    if (myUrl.startsWith(u)) {
      int pos = myUrl.indexOf("code=");
      code = myUrl.substring(pos + "code=".length());
      FacebookClient.AccessToken token = facebookClient.obtainUserAccessToken(appId,
              appSecret, SUCCESS_URL, code);
      acctoken=token.getAccessToken();
        System.out.println(acctoken);
    }

  });
 return acctoken;}
java facebook restfb
2个回答
0
投票

Web引擎异步工作,因此在acctoken方法完成之前返回Webengine#load。你必须考虑另一种方法。


0
投票

通过使用getct和setter为acctoken我能够解决这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.