java - Facebook java API 中 client.auth_getSession() 的无效参数异常

标签 java authentication facebook

我想使用 facebook java api 2.1.1( http://code.google.com/p/facebook-java-api/) 连接到我的 facebook 应用程序。我的应用程序处于“桌面”模式,因此我应该能够在 Web 应用程序之外访问它。我也没有为它定义任何回调 url。我的代码看起来像这样。

FacebookJsonRestClient client = new FacebookJsonRestClient( FB_APP_API_KEY, FB_APP_SECRET );
String token = client.auth_createToken();
HttpClient http = new HttpClient();
http.setParams(new HttpClientParams());
http.setState(new HttpState());

final String LOGIN = "https://login.facebook.com/login.php";

GetMethod get = new GetMethod(LOGIN + "?api_key=" + FB_APP_API_KEY + "&v=1.0&auth_token=" + token );

http.executeMethod(get);

PostMethod post = new PostMethod(LOGIN);
post.addParameter(new NameValuePair("api_key", FB_APP_API_KEY));
post.addParameter(new NameValuePair("v", "1.0"));
post.addParameter(new NameValuePair("auth_token", token));
post.addParameter(new NameValuePair("email", "my-email"));
post.addParameter(new NameValuePair("pass", "my-password"));

http.executeMethod(post);

String session = client.auth_getSession(token);

但是,API 没有返回 session ,而是抛出异常:

com.google.code.facebookapi.FacebookException: Invalid parameter
    at com.google.code.facebookapi.FacebookJsonRestClient.parseCallResult(FacebookJsonRestClient.java:354)
    at com.google.code.facebookapi.ExtensibleClient.callMethod(ExtensibleClient.java:535)
    at com.google.code.facebookapi.ExtensibleClient.callMethod(ExtensibleClient.java:472)
    at com.google.code.facebookapi.FacebookJsonRestClient.auth_getSession(FacebookJsonRestClient.java:278)

任何人都可以告诉我这段代码有什么问题吗?以及使用 java api(v.2.1.1)在桌面模式下访问 facebook 应用程序的正确方法是什么。

感谢您的帮助。

问候 纳比尔·穆赫塔尔

最佳答案

据我了解 FB 的 API,您不应该手动提供用户名和密码,而是让用户手动输入它们,然后允许 Facebook 登录将用户重定向回您的应用程序。这意味着您提供的不是“电子邮件”和“通过”,而是“下一步”和“取消”URL。

这纯粹是 FB API 的一个安全特性,虽然它背后的理论没问题,但执行远非最佳。

关于java - Facebook java API 中 client.auth_getSession() 的无效参数异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1042148/

相关文章:

JavaFX:显示简单消息的最佳方式是什么?

php - 在 PHP 中添加用户身份验证

ios - 转移到 swift 3 xcode 8 后,当我登录 Facebook 时没有任何反应

node.js - 如何使用 create-react-app 提供 SSL 证书?

JAVA - For循环不创建新数组

java - 从 cassandra DB 检索数据后创建 RDD

php - 按后退按钮会重定向已登录的用户以注销吗?

ios - 如何使用 iPhone 为 Facebook 创建新相册

java - 在 MySQL 上使用 NoSQL 数据库

authentication - 使用 django allauth 注册自定义用户