FB SDK无法在OS 7上运行

我正在我的一个应用程序中实现FB。我正在使用jar 0.8.25。 它适用于从5到7.1的所有模拟器。并且设备仅适用于OS 5和6但不适用于设备7和7.1。对于OS 7,登录成功后它仍保留在FB页面上,它不会重定向回来。 当我按下后退按钮时,我遇到错误,无法刷新访问令牌再次尝试按钮。

在控制台上进行分析时,它永远不会为OS 7找到访问令牌的单一时间。而对于5和6,它完全正常工作。

请告诉可能导致问题的原因。

谢谢,

这不是您特定问题的解决方案。 我在评论中提到我正在使用界面。 所以我在这里发布的评论部分太多了。 它也不是COMPLETE解决方案,您需要处理流程和过期的令牌,这只是为了向您展示我如何做到这一点的逻辑。

对于我的界面,我打开一个浏览器域到Oauthurl: https://www.facebook.com/dialog/oauth?client_id=&response_type=token&redirect_uri=http://www.facebook.com/connect/login_success.html&scope=publish_actionshttps://www.facebook.com/dialog/oauth?client_id=&response_type=token&redirect_uri=http://www.facebook.com/connect/login_success.html&scope=publish_actions client_id https://www.facebook.com/dialog/oauth?client_id=&response_type=token&redirect_uri=http://www.facebook.com/connect/login_success.html&scope=publish_actions APP_ID>&response_type=token&redirect_uri https://www.facebook.com/dialog/oauth?client_id=&response_type=token&redirect_uri=http://www.facebook.com/connect/login_success.html&scope=publish_actions : https://www.facebook.com/dialog/oauth?client_id=&response_type=token&redirect_uri=http://www.facebook.com/connect/login_success.html&scope=publish_actions

我在这个浏览器中添加了一个监听器,以便在登录后监听重定向。 获得访问令牌后,您应该保留它并关闭浏览器字段。

 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

请注意,清除访问令牌不会清除存储在浏览器字段中的令牌。 并且意味着您下次无法登录(因为浏览器仍然登录)。 因此,如果您要注销,则需要在清除本地访问令牌之前在浏览器字段中打开此链接"https://www.facebook.com/logout.php?next=http://www.facebook.com/connect/login_success.html&access_token=" + access_token清除浏览器的cookie应该足够了,但我还没有办法做到这一点。