我试图从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;}
Web引擎异步工作,因此在acctoken
方法完成之前返回Webengine#load
。你必须考虑另一种方法。
通过使用getct和setter为acctoken我能够解决这个问题。