2016-12-12 4 views
0

CI環境として使用するローカル無人機サーバーをセットアップしようとしています。私たちのソースコードはGithubによって管理されています。 まず、Githubでoauthアプリケーションを作成し、client_idとclient_secretを取得します。 それから私は/etc/drone/dronercgithub oauthで動作するように無人セットアップする方法

REMOTE_DRIVER=github 
REMOTE_CONFIG=https://github.com?client_id=XXXXXX&client_secret=XXXXXX 
DATABASE_DRIVER=sqlite3 
DATABASE_CONFIG=/var/lib/drone/drone.sqlite 

に設定下回ったことが後に続いて、私はドローンのドッキングウィンドウコンテナ起動するコマンドの下に実行し、ドッキングウィンドウやドローンをインストールします。私は、私は、ブラウザ上のドローンのリンクにアクセス

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 

をログインボタンが表示されます。以下に示すように。

enter image description here

ログインボタンの上にIをクリックすると、私のコールバックURLは、以下のエラーメッセージで通知されます。

以下
error=redirect_uri_mismatch&error_description=The+redirect_uri+MUST+match+the+registered+callback+URL+for+this+application. 

はGithubのコールバックURLのサーバーコードです:

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アカウントにアクセスできるようにその部分を実装する方法を知っていますか?

おかげ

答えて

0

あなたはGitHubの中でドローンアプリケーションを作成するときhttp://hostname.com/authorize

OAuthのフローを実行すると、無人機が示すのGitHubにredirect_urlクエリパラメータを提供のようなものに設定する必要がありますリダイレクトURLフィールドがありますログインに成功した後にリダイレクトする場所。以下のエラーメッセージがGitHubの中で設定されたものと一致していませんredirect_urlクエリパラメータを示唆

+ REDIRECT_URI + MUSTマッチ+ + +この+アプリケーション

用+登録+コールバック+ URL + githubのドキュメントから

あなたがあなたのアプリケーションに登録したものと一致しないREDIRECT_URIを提供した場合は、GitHubには、エラーをまとめた次のパラメータを使用して登録したコールバックURLにリダイレクトされます

これらの値は完全一致でなければなりません。単純なhttpとhttpsの不一致でもエラーが発生します。

DroneはGoに書かれているので、Rubyコードの目的は何であるか不明です。だから、残念ながらそれは私がコメントできるものではありません。

ドキュメントごとにX-Forwarded-ForX-Forwarded-Protoを設定せずに、リダイレクトURLを間違って設定しているか、ドローンをリバースプロキシの背後で実行していると言うことがあります。 Droneは、リバースプロキシの背後で実行しているときにこれらの値を使用して、redirect_urlの値を設定するときに使用される独自のURLを決定します。

関連する問題