我是浏览器扩展程序的新手。我正在尝试创建一个Safari扩展,允许我在我的Github帐户中执行基本任务(例如,创建一个repo)。我这样做主要是为了学习如何在练习JS时开发扩展。
问题是,为了连接到Github我想使用OAuth,但我不知道如何做到这一点。我用谷歌搜索,看看我是否能找到一个我可以使用的图书馆而没有任何结果。主要的问题是,在尝试使用Github注册我的“应用程序”时,我不知道为主应用程序和回调提供什么URL,因为它不是我正在开发的Web应用程序;这是一个扩展。
有没有人对此有任何经验,可以给我一个关于如何进行的提示?我应该用什么URL注册Github?是否可以从扩展中使用OAuth?有没有图书馆,SDK,什么可以帮助完成这项工作? 如果这个问题可以扩展到任何浏览器,只需告诉我,我将更改标题以帮助其他人处于相同的情况。
感谢所有人的帮助。
答案 0 :(得分:2)
我在Safari扩展程序中使用了OAuth,欢迎您查看我的代码以获取示例(请参阅下面的链接),但是此JS library for Github可能只需要您。我没有使用它,但它看起来不错,它支持“个人访问令牌”,我认为它是Github的一种OAuth令牌,不需要指定重定向URI。
我的Safari扩展程序(Github link)使用OAuth 2.0与Pocket API进行通信。它不使用库。对于重定向URI,我使用与启动整个授权过程的页面相同的URL,但附加了“?status = done”。页面的脚本检查其URL,如果URL以该字符串结尾,则它知道页面是由授权窗口加载的,因此它可以继续获取访问令牌。
在任何类型的客户端应用程序(例如浏览器扩展程序)中使用OAuth时,您应该注意的一点是,您的OAuth应用程序令牌将向您的应用程序用户公开。即使您在应用程序中对其进行加密或通过https从服务器检索它,用户也可以使用浏览器的内置JS调试器来获取令牌,因为您必须在某些时候对其进行解密才能使用它。如果有人窃取你的令牌,他们可以用来诱骗人们授权他们伪装成你的恶意应用程序。由您来决定这种风险是否可以容忍。避免此风险的唯一方法是让您自己的服务器端应用程序与第三方API通信,并且您的扩展程序与之通信。但是,有人可以从您的扩展程序代码中学习如何与您的服务器端应用程序通信,所以我不确定这是否真的能为您带来任何收获。