Facebook,Dropbox或Twitter等开发者网站如何生成App ID?

时间:2014-03-05 10:25:54

标签: android ios facebook app-id

我正在开发平台,当开发人员注册他们的应用程序以使用我们的平台时,需要生成App ID,来自FB,dropbox等网站,常见的步骤是开发人员指定app显示名称,一些权限新应用程序的配置,然后它将生成唯一的App ID和App secret。

我的问题是他们如何实现它,比如算法,机制,最佳实践等等?任何帮助和细节将不胜感激!

1 个答案:

答案 0 :(得分:1)

应用ID通常是大数字或一系列随机生成的字母数字字符。例如,Twitter使用22个字母数字字符的序列。应用程序ID不是秘密,因为您经常需要将它们放在客户端代码中以进行API调用。您可以使用您选择的语言生成一个。例如,在Python中查看这个单行代码:

import random, string
app_id = ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(20)) # 20 being the size of the App ID you're wanting

另一方面,密钥是唯一标识符或无法猜到的非常长的字符串。它们不是公开的,不应该永远,对公众可用(例如,在JavaScript代码中)。这并不意味着您应该使用复杂的算法来生成它们。 UUID(或GUID取决于您希望如何调用它)在这里是完全可以接受的,但为了增加安全性,您可能希望将它们安全地存储在您的数据库中(例如加密),以防它被坏人甩掉。同样,在Python中,这一切都归结为这两行:

import uuid
secret_key = uuid.uuid1()

秘密密钥用于服务器和开发人员代码之间的私有对话框中,因此您应该使用它们作为开发人员知道他的密钥以及他的App ID的证明。例如,Twitter要求所有API请求都使用开发人员的密钥和临时质询的组合进行签名。在开发人员代码中计算的HMAC-SHA1签名充当了他知道他的秘密密钥和Twitter API发送的先前秘密挑战的证据。

因此复杂的部分不会生成应用程序ID或密钥:它正在编写安全代码以确保您与正确的开发人员交谈:) 要获得一些灵感,请在知名的API(如Facebook,Twitter,LinkedIn或Google+)上查看(您似乎已经开始这样做了),看看“大人物”如何处理这类问题。