【问题标题】:How does developer sites like Facebook, Dropbox, or Twitter generate App ID?Facebook、Dropbox 或 Twitter 等开发者网站如何生成 App ID?
【发布时间】:2014-03-05 10:25:53
【问题描述】:

我正在开发一个开发者平台,当开发者从 FB、Dropbox 等网站注册他们的应用程序以使用我们的平台时,该平台需要生成 App ID,常见步骤是开发者指定应用程序显示名称、一些权限为新应用程序配置,然后它将生成唯一的应用程序 ID 和应用程序密钥。

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

【问题讨论】:

    标签: android ios facebook app-id


    【解决方案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()
    

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

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

    【讨论】:

    • 另一点:您可能想看看由 Facebook 和许多其他服务实现的 OAuth2 协议。 OAuth2 的重点是用 { app ID, secret key } 交换访问令牌。一旦开发者获得了这个访问令牌,他就将其用于所有后续调用以证明他的身份。如果您怀疑访问令牌已被泄露,则访问令牌可能会在您这边过期,并且开发人员将不得不使用他的 App ID 和密钥重新开始验证过程。在服务器端实现 OAuth(称为 OAuth 提供者)并非易事,但...
    猜你喜欢
    • 2016-06-26
    • 2012-06-22
    • 1970-01-01
    • 1970-01-01
    • 2010-10-08
    • 2013-11-29
    • 1970-01-01
    • 1970-01-01
    • 2015-07-16
    相关资源
    最近更新 更多