构建一个代号为1的聊天应用程序3

在上一节中,我们介绍了使用Google登录的过程,在本节中,我们介绍了使用Facebook登录的过程。 此时,我们将跳过“邀请朋友”选项,因为那是所有博客帖子,而我们只能将该功能添加到已完成的应用程序中。

对于Google,我们将使用电子邮件作为唯一标识符,但Facebook可能不会公开用户名。 但是,Facebook确实有我们可以使用的“获取朋友” API调用,它的缺点是它只会返回已经加入该应用程序的朋友,因此我们将无法任意联系任何人。

入门–配置

Facebook的入门与Google的流程非常相似,您可以在此处进行了解。

您需要转到https://developers.facebook.com/apps/并注册以创建应用程序:

chat-app-tutorial-facebook-login-2

您需要针对Web,Android和iOS重复该过程(模拟器使用Web):

chat-app-tutorial-facebook-login-3

对于第一个平台,您需要输入应用名称:

chat-app-tutorial-facebook-login-4

并提供一些基本细节:

chat-app-tutorial-facebook-login-5

对于iOS,我们需要使用包ID,该ID与我们在Google+登录中使用的包ID完全相同,以便有效地识别iOS应用及其程序包名称:

chat-app-tutorial-facebook-login-6

您应该最终得到如下所示的内容:

chat-app-tutorial-facebook-login-7

Android流程非常相似,但在这种情况下,我们也需要活动名称。

重要提示:请注意屏幕截图中有一个错误,活动名称应与主类名称匹配,后跟单词Stub(大写s)。 在这种情况下,它应该是SocialChatStub。

chat-app-tutorial-facebook-login-8

就像在Google+上一样,我们需要生成一个哈希值以验证该应用程序确实是Facebook的应用程序,我们使用相同的keytool方法通过命令行进行此操作:

keytool -exportcert -alias (your_keystore_alias) -keystore (path_to_your_keystore) | openssl sha1 -binary | openssl base64

最后,您需要通过在应用程序的“状态和评论”页面中进行如下切换来发布Facebook应用程序:

chat-app-tutorial-facebook-login-9

项目配置

现在,我们需要在项目中设置一些重要的构建提示,以便其正常运行。 要设置构建提示,只需右键单击项目,选择项目属性,然后在Codename One部分中选择第二个选项卡。 将这些条目添加到表中:

facebook.appId=...

该应用程序ID将在您的Facebook应用程序页面的左上方显示。

编码

所以现在所有这些都准备就绪了,我们希望它可以与我们的应用一起使用...

添加事件处理以使用Facebook登录,例如:

loginWithFacebook.addActionListener((e) -> {
    tokenPrefix = "facebook";
    Login fb = FacebookConnect.getInstance();
    fb.setClientId("739727009469185");
    fb.setRedirectURI("http://www.codenameone.com/");
    fb.setClientSecret("-------");
    doLogin(fb, new FacebookData());
});

请注意,客户端ID,重定向,机密等都与模拟器登录相关,并且不会在本机Facebook登录生效的Android / iOS上使用。

与Google+实现类似,我们将基于上次定义的接口创建一个类来抽象Facebook连接:

static class FacebookData implements UserData {
        String name;
        String id;

        @Override
        public String getName() {
            return name;
        }

        @Override
        public String getId() {
            return id;
        }

        @Override
        public String getImage() {
            return "http://graph.facebook.com/v2.4/" + id + "/picture";
        }

        @Override
        public void fetchData(String token, Runnable callback) {
            ConnectionRequest req = new ConnectionRequest() {
                @Override
                protected void readResponse(InputStream input) throws IOException {
                    JSONParser parser = new JSONParser();
                    Map<String, Object> parsed = parser.parseJSON(new InputStreamReader(input, "UTF-8"));
                    name = (String) parsed.get("name");
                    id = (String) parsed.get("id");
                }

                @Override
                protected void postResponse() {
                    callback.run();
                }
            };
            req.setPost(false);
            req.setUrl("https://graph.facebook.com/v2.4/me");
            req.addArgumentNoEncoding("access_token", token);
            NetworkManager.getInstance().addToQueue(req);
        }
}

这确实是微不足道的代码,我们只需连接到Facebook的Graph API并提供令牌即可。 从这里开始,只需解析返回的数据即可,该数据仅包含用户名和唯一ID的两个键,稍后我们可以在建立聊天时使用它们。

Facebook登录就是这样,下一次我们将进入访问联系人并显示UI界面中的联系人。

本系列其他文章

这是一系列持续不断的帖子,包括以下部分:

翻译自: https://www.javacodegeeks.com/2015/08/building-a-chat-app-with-codename-one-part-3.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值