【发布时间】:2014-03-05 10:25:53
【问题描述】:
我正在开发一个开发者平台,当开发者从 FB、Dropbox 等网站注册他们的应用程序以使用我们的平台时,该平台需要生成 App ID,常见步骤是开发者指定应用程序显示名称、一些权限为新应用程序配置,然后它将生成唯一的应用程序 ID 和应用程序密钥。
我的问题是他们如何实现它,比如算法、机制、最佳实践等等?任何帮助和细节将不胜感激!
【问题讨论】:
标签: android ios facebook app-id
我正在开发一个开发者平台,当开发者从 FB、Dropbox 等网站注册他们的应用程序以使用我们的平台时,该平台需要生成 App ID,常见步骤是开发者指定应用程序显示名称、一些权限为新应用程序配置,然后它将生成唯一的应用程序 ID 和应用程序密钥。
我的问题是他们如何实现它,比如算法、机制、最佳实践等等?任何帮助和细节将不胜感激!
【问题讨论】:
标签: android ios facebook app-id
应用 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()
密钥用于您的服务器和开发人员代码之间的私人对话,因此您应该使用它们来证明您的开发人员知道他的密钥以及他的应用程序 ID。例如,Twitter 要求所有 API 请求都使用开发人员的密钥和临时质询的组合进行签名。在开发者的代码中计算的 HMAC-SHA1 签名证明他知道他的密钥,以及之前由 Twitter API 发送的秘密挑战。
因此,复杂的部分不是生成 App ID 或密钥:它是编写安全代码以确保您与正确的开发人员交谈 :) 要获得一些灵感,请查看(您似乎已经开始这样做)Facebook、Twitter、LinkedIn 或 Google+ 等知名 API,了解“大公司”如何处理此类问题。
【讨论】: