首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设置无人机服务器与github oauth一起工作

如何设置无人机服务器与github oauth一起工作
EN

Stack Overflow用户
提问于 2016-12-12 06:47:33
回答 1查看 2K关注 0票数 0

我正在尝试设置一个本地的无人机服务器作为我们的CI环境。我们的源代码是由Github管理的。首先,我在Github上创建了一个oauth应用程序,并获得了client_id和client_secret。然后安装码头和无人驾驶飞机,然后我在/etc/drone/dronerc上做了下面的配置

代码语言:javascript
复制
REMOTE_DRIVER=github
REMOTE_CONFIG=https://github.com?client_id=XXXXXX&client_secret=XXXXXX
DATABASE_DRIVER=sqlite3
DATABASE_CONFIG=/var/lib/drone/drone.sqlite

然后,我按照命令运行,启动无人驾驶码头集装箱:

代码语言:javascript
复制
sudo docker run \
  --volume /var/lib/drone:/var/lib/drone \
  --volume /var/run/docker.sock:/var/run/docker.sock \
  --env-file /etc/drone/dronerc \
  --restart=always \
  --publish=80:8000 \
  --detach=true \
  --name=drone \
  drone/drone:0.4

我访问浏览器上的无人机链接,我可以看到一个登录按钮。如下所示。

当我单击登录按钮时,我的回调url将收到以下错误消息的通知:

代码语言:javascript
复制
error=redirect_uri_mismatch&error_description=The+redirect_uri+MUST+match+the+registered+callback+URL+for+this+application.

下面是Github回调url的服务器代码:

代码语言:javascript
复制
get '/oauth/authorize' do
  # get temporary GitHub code...
  session_code = request.env['rack.request.query_hash']['code']

  # ... and POST it back to GitHub
  result = RestClient.post('https://github.com/login/oauth/access_token',
                          {:client_id => CLIENT_ID,
                           :client_secret => CLIENT_SECRET,
                           :code => session_code},
                           :accept => :json)

  # extract the token and granted scopes
  access_token = JSON.parse(result)['access_token']
  redirect 'http://10.0.0.24/'
end

在上述代码的最后一行中,重定向地址是无人驾驶飞机服务器地址。我可能在OAuth身份验证部分做了错误的事情,但我不知道如何正确地做到这一点。有谁知道如何实现这部分,以允许无人机进入我的Github帐户?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-13 16:09:24

在GitHub中创建无人机应用程序时,应该将重定向url字段设置为类似于http://hostname.com/authorize的内容。

在执行oauth流时,无人驾驶飞机向redirect_url提供一个GitHub查询参数,指示成功登录后向何处重定向。下面的错误消息提示redirect_url查询参数不匹配在GitHub中配置的内容

The+redirect_uri+MUST+match+the+registered+callback+URL+for+this+application

来自github文档

如果您提供的redirect_uri与您在应用程序中注册的内容不匹配,GitHub将重定向到已注册的回调URL,并使用以下参数总结错误

注意,这些值必须是完全匹配的。即使是简单的http与https不匹配也会导致错误。

Ruby代码的用途有点不清楚,因为无人驾驶飞机是用Go编写的。因此,不幸的是,我不能对此发表评论。

我可以说,最常见的错误是不正确地配置重定向url,或者在反向代理后面运行无人驾驶飞机,而不按文档配置X-Forwarded-ForX-Forwarded-Proto。当在反向代理后面运行时,无人机使用这些值来确定自己的URL,然后在设置redirect_url值时使用该URL。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41095473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档