我正在尝试使用restfb api从Facebook获取访问令牌一切正常,我可以打印访问令牌,但当我尝试返回它时,我得到一个空值.. 以下是代码
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;}
答案 0 :(得分:0)
Web引擎异步工作,因此在 acctoken
方法完成之前,Webengine#load
将返回。你必须考虑另一种方法。
答案 1 :(得分:0)
通过使用acctoken的getter和setter,我能够解决这个问题。