5

私はドアキーパーの宝石を使用しています

私の ApplicationController は次のようになります。

private
def current_resource_owner
    Person.find(doorkeeper_token.resource_owner_id) if doorkeeper_token
end

私の DemoController は次のようになります。

doorkeeper_for :index
respond_to :json 
def index
    respond_with current_resource_owner
end

応答は次のようになります。

Started GET "/?code=f88d2e95b1b286645d31772c395e0e36708a5i0p970836af640f631bb4f043b5" for 127.0.0.1 at 2014-01-28 11:10:56 +0530
Processing by DemosController#index as HTML
Parameters: {"code"=>"f88d2e95b1b286645d31135c395e0e36708a5b5b970836af640f631bb4f043b5"}
Filter chain halted as #<Proc:0xb608b90@/home/xyz/.rvm/gems/ruby-1.9.3-p484@verticalserver/gems/doorkeeper-1.0.0/lib/doorkeeper/helpers/filter.rb:8> rendered or redirected
Completed 401 Unauthorized in 1ms (ActiveRecord: 0.0ms)
4

4 に答える 4

1

あなたの質問を正しく理解しているかどうか、100%確信が持てません。コードは問題ないように見えますが、リクエストが間違っているようです。

Doorkeeper では、リソース (DemosController#index) にアクセスするための Code パラメーターではなく、アクセス トークンが必要です。そのため、まず認証コードからアクセス トークンを取得する必要があります。だから依頼をする

GET "/oauth/token?code=...&grant_type=authorization_code&redirect_uri=...&client_id=...&client_secret=..."

redirect_uri がクライアント アプリケーションに登録されているものと一致していることを確認し、正しい client_id と client_secret を要求に追加してください。また、常に新しいコード パラメータを使用してください。デフォルトでは、生成後 10 分間のみ有効です。カスタマイズされた Doorkeeper ルートの場合、URL (/oauth/token) が異なる場合があることに注意してください。

リクエストを正しく行った場合、レスポンスには有効なアクセス トークンが含まれます。

次に、"/?code=..." の代わりに "/index.json?access_token=..." に対して GET リクエストを行います。'.json' は、クライアントが JSON を処理できることを Rails に伝えます。そうしないと、406 応答が返されます。これは、要求された形式 (デフォルトでは HTML) がサポートされていないことを意味します。「.json」の代わりに、HTTP ヘッダーで Accept="application/json" を送信することもできます。

現在受け取っている 401 Unauthorized 応答は、認証情報 (この場合は有効なアクセス トークン) が間違っているか、まったくないことを意味します。

それが役立つことを願っています。

于 2015-02-19T18:16:44.647 に答える
0

「DemosController#index as HTML」をリクエストしているため、respond_to も html に応答する必要があります。

respond_to :html, :json
于 2014-03-13T18:10:44.353 に答える
0

あなたにとっての答えではないかもしれませんが、あなたにとっての答えかもしれません。

ドアキーパーのバージョンをダウングレードしたところ、問題は解決しました。2019年3月

https://github.com/doorkeeper-gem/doorkeeper/issues/732

于 2019-03-20T17:40:57.613 に答える