【发布时间】:2016-10-07 09:08:09
【问题描述】:
我已经为此苦苦挣扎了几个小时。这是我采取的步骤:
-
用主包
com.recipes.auth和主类FacebookAuth创建一个新的基本代号一个应用程序 -
为android创建facebook应用,设置包名为
com.recipes.auth,主类名设置为FacebookAuthSub -
然后,生成哈希并粘贴它。哈希是使用以下方法创建的:
keytool -exportcert -alias (your_keystore_alias) -keystore (path_to_your_keystore) | openssl sha1 -二进制 | openssl base64
-
在 Codename One facebook.appId 中添加构建提示
-
在主窗体中编写如下代码:
String clientId = "xxxxx"; String redirectURI = "{server}/auth/facebook"; String clientSecret = "xxx"; Login fb = FacebookConnect.getInstance(); fb.setClientId(clientId); fb.setRedirectURI(redirectURI); fb.setClientSecret(clientSecret); //Sets a LoginCallback listener fb.setCallback(new LoginCallback() { @Override public void loginSuccessful() { ConnectionRequest connectionRequest = new ConnectionRequest(); connectionRequest.setPost(false); connectionRequest.setUrl( "{server}/auth/facebook/callback?access_token=" + fb.getAccessToken().getToken()); connectionRequest.addResponseListener(event -> { Log.p(new String(connectionRequest.getResponseData())); }); NetworkManager.getInstance().addToQueue(connectionRequest); } @Override public void loginFailed(String errorMessage) { Dialog.show("No!", "it did not work!", "sad", null); } }); Form hi = new Form("Hi World"); Button loginWithFacebook = new Button("Fb Auth"); loginWithFacebook.addActionListener(event -> { //trigger the login if not already logged in if(!fb.isUserLoggedIn()){ fb.doLogin(); }else{ //get the token and now you can query the facebook API String token = fb.getAccessToken().getToken(); } }); hi.add(loginWithFacebook); hi.show();其中 {server} 是我的服务器的 uri。我的服务器的auth路径是
{server}/auth/facebook,回调地址是{server}/auth/facebook/callback,成功重定向是{server}/api/Users/me。 -
将网络客户端添加到 Facebook 应用程序,以启用模拟器
-
在产品中的 facebook 应用页面上,添加产品,然后添加 Facebook 登录,并在有效 OAuth 重定向 URI 中输入我的服务器。
-
现在,当我从设备尝试时,我收到有关无效哈希的错误。
在these 的答案之一中,建议这可能是因为
如果您从其他设备(PC)构建 apk,Android 密钥哈希将发生变化
这实际上是正确的,因为我使用的是 Codename One 云构建。我遵循以下指南: Facebook Login - Codename One, Social Chat Part 3 - Codename One 并且找不到答案。但是如何使用我自己的服务器设置与 Facebook 身份验证相关的所有内容?我正在寻找一种实际可行的简单、逐步的方法。
【问题讨论】:
标签: facebook authentication codenameone