【问题标题】:How to add the user name in the url for a Chrome extension?如何在 Chrome 扩展程序的 url 中添加用户名?
【发布时间】:2011-10-19 20:34:30
【问题描述】:

我正在开发一个以谷歌应用引擎为后端的 chrome 书签扩展。我现在是唯一的用户,但我认为如果将来有其他用户,则 url 需要包含用户名,以便扩展与后端交互。所以我想改变

http://ting-1.appspot.com/useradminpage

http://ting-1.appspot.com/user_name/useradminpage

其中“user_name”是 gmail 用户 ID。

但我查看了推特网址,发现他们有

http://twitter.com/#!/user_name/

“#!”的目的是什么?在这种情况下,我的方案是否足够好?

【问题讨论】:

  • 使用gmail用户名是不够的(如果可能的话),你需要实现一些服务器端授权。
  • @serg,好的,我退出后端并使用扩展程序保存页面。它仍然将链接保存到background.html 中,但没有我的用户名(“所有者”字段中有 )。那么,这是如何工作的,如果另一个用户正在使用扩展程序会发生什么?我正在考虑将background.html 中的网址更改为http://ting-1.appspot.com/user_name/useradminpage,以便每个用户将书签保存在他的用户名下。这是一个好的解决方案吗?感谢您的评论。
  • 问题是如何识别用户。 Url格式无关紧要,你可以使用任何你喜欢的。您不能只传递用户名,因为我可以轻松阅读所有其他用户的书签。除非这是一种期望的行为,否则您需要在您的服务器上实现某种授权(用户名/密码、oauth)。然后要接收用户的书签,您可以将用户名和密码传递给服务器,或者传递 oauth 令牌。
  • @serg,是的,我还没有很好的用户授权实现。我只是使用谷歌应用引擎附带的用户服务。所以按照我现在的方式,非用户可以查看主页ting-1.appspot.com,只是为了了解该应用程序。否则,用户需要使用 gmail 帐户登录才能查看他们的书签。因此,如果我没有登录,我将看不到此页面上的书签ting-1.appspot.com/useradminpage。那么如何让扩展程序知道为每个用户编写书签给哪个用户呢?感谢您的 cmets!
  • 抱歉,我不熟悉 gmail 登录或应用引擎的工作原理。

标签: google-app-engine url google-chrome-extension


【解决方案1】:

URL 中的# 表示“片段标识符”。从历史上看,这已被用于识别由“锚”标签标识的文档的一部分,但最近 webapp 开发人员已经开始使用它来将有关页面状态的信息传递给页面中运行的 Javascript 代码。之所以使用它,是因为 Javascript 代码可以修改当前页面的片段而不会导致页面重新加载——这意味着它可以在您浏览 web 应用程序时更新,并在您重新加载页面时立即返回到您所在的位置。

当浏览器加载页面时,片段不会发送到服务器,因此 Twitter 的服务器只看到对 twitter.com 的请求;由页面中的 Javascript 代码检查片段并确定之后要做什么。

在您的特定情况下,假设您使用 App Engine 用户服务对用户进行身份验证,您可以通过多种选择来区分网址中的用户:

  1. 使用他们的电子邮件地址。从理论上讲,这可能会发生变化,用户可能不希望他们的地址出现在他们将共享的 URL 中。如果 URL 是私有的,这或多或少是一个有争议的问题。
  2. 使用他们的 user_id。这是不透明的,不会透露有关用户的有用信息,因此很安全,但也没有意义且难以记忆。
  3. 让用户为他们的 URL 选择一个昵称,就像 Facebook 和其他服务一样,按照先入先得的原则。

【讨论】:

    猜你喜欢
    • 2015-10-06
    • 1970-01-01
    • 1970-01-01
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-12
    • 1970-01-01
    相关资源
    最近更新 更多