我想使用 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/