java - 在操作系统 7上,FB SDK无法工作

  显示原文与译文双语对照的内容
0 0

我正在使用 jar 0.8.25在我的一个 app.I 中实现 FB 。 在devices到 10. And 设备的所有模拟器工作良好,只适用于操作系统 5和 6,但不工作在设备 7 success log success page page redirect 。 当按下按钮时,遇到无法刷新访问令牌的错误,再次尝试按钮。

在分析控制台时,它永远不会发现操作系统 7. while的访问令牌单时间,并且它的工作完全正常。

请告诉我什么可能导致这个问题。

谢谢,

时间: 原作者:

0 0

这不是解决你特定问题的方法。 我在评论中提到,我正在使用接口。 所以我在这里张贴的内容太多了。 这也不是完整的解决方案,你需要处理流和过期的令牌,这就是我们的逻辑。

对于我的接口,我打开了一个browserfield到Oauth网址: https://www.facebook.com/dialog/oauth?client_id=<APP_ID>&response_type=token&redirect_uri=http://www.facebook.com/connect/login_success.html&scope=publish_actions

我在这个浏览器中添加一个监听器,以便在登录后监听重定向。 获得访问令牌后,应该持久化它并关闭 browserfield 。


private class OAuthScreen extends MainScreen
 {
 BrowserField browser_field;
 LoadingDialog loading_dialog;

 public OAuthScreen(final Command task)
 {
 super(VERTICAL_SCROLL | HORIZONTAL_SCROLL);
 BrowserFieldConfig browserConfig = new BrowserFieldConfig();
 browserConfig.setProperty(BrowserFieldConfig.VIEWPORT_WIDTH, new Integer(Display.getWidth()));

 browser_field = new BrowserField(browserConfig);
 browser_field.addListener(new BrowserFieldListener()
 {
 public void documentCreated(BrowserField browserField, ScriptEngine scriptEngine, Document document) throws Exception
 {
 int index = browserField.getDocumentUrl().indexOf("#access_token=");
 if (index == -1)
 {
 super.documentCreated(browserField, scriptEngine, document);
 }
 else
 {
 access_token = browserField.getDocumentUrl().substring(index +"#access_token=".length(), browserField.getDocumentUrl().indexOf("&"));

 PersistentObject store = PersistentStore.getPersistentObject(STORE_KEY);
 FacebookTokens store_tokens = new FacebookTokens();
 store_tokens.access_token = access_token;
 store.setContents(store_tokens);
 store.commit();

 if (task!= null) task.execute();
 OAuthScreen.this.close();
 }
 }

 public void documentLoaded(BrowserField browserField, Document document) throws Exception
 {
 super.documentLoaded(browserField, document);
 loading_dialog.close();
 }
 });
//whatever loading dialog you want, this sometimes takes a while to open
 loading_dialog = LoadingDialog.push(loading_field);

 add(browser_field);
 browser_field.requestContent("https://www.facebook.com/dialog/oauth?client_id="+APP_ID+"&response_type=token&redirect_uri=http://www.facebook.com/connect/login_success.html&scope=publish_actions");
 }
 }

如果我想在登录后直接执行呼叫,那么回调任务就是这样。

现在只要执行API调用就可以了。 API方法在这里,需要访问令牌的 https://developers.facebook.com/docs/graph-api/reference/v2.0/,方法,应该将它的附加到 url,如https://graph.facebook.com/me/feed?access_token=" + access_token

注意清除访问令牌将不会清除在浏览器字段中存储的令牌。 这意味着你下次不能登录( 因为浏览器仍在登录) 。 因此,如果想注销,需要在清除本地访问令牌之前在browserfield中打开这里链接 "https://www.facebook.com/logout.php?next=http://www.facebook.com/connect/login_success.html&access_token=" + access_token 清除浏览器的Cookies 应该足够了,但是我没有找到这样做的方法。

原作者:
...