2016-07-07 9 views
5

OAuth2認証にXamarin.Authを使用しているときに問題が発生しています。ヘッダに追加することにより、 http://example.com/backend/oauth/token ::私は私のバックエンドのURLにGETメソッドを介して、トークンのリクエストを送信していPOSTMANからOAuth2認証にXamarin.Authを使用する - ユーザー名とパスワード?

認可、基本的には

をxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxし、以下のパラメータを持ちますURL:

client_id = backendClient http://example.com/backend/oauth/token?client_id=backendClient&scope=read&grant_type=password&username=admin&password=admin

が、それはJSONを私に戻っています:

範囲=

がそう、それはのようになります

grant_type =パスワード

ユーザ名=管理者

パスワード=管理者を読みます次のようになります。

{ 
"access_token": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", 
"token_type": "bearer", 
"refresh_token": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", 
"expires_in": 9999, 
"scope": "read" 
} 

私は(Xamarin.Formsアプリを使用して)、モバイルアプリケーションから、私のバックエンドサービスを認証したかった、と私は私のバックエンドに認証するために、Xamarin.Authを使用しようとした - https://developer.xamarin.com/guides/xamarin-forms/web-services/authentication/oauth/

<UnauthorizedException> 
    <error>unauthorized</error> 
    <error_description>Full authentication is required to access this resource</error_description> 
</UnauthorizedException> 
を:それは返すよう

は確かOAuth2Authenticatorを使用して、それが、少なくとも "ピング" 私のバックエンド(URLを置くことによって、clientIdeなど)にできますしかし、それは間違った方法で送信されているメッセージです - 少なくとも私はそうだと思うので、の承認のヘッダーに+ にOAuth2Authenticator にユーザ名とパスワードを渡す可能性はありません。

誰もが考えている、私はこれを行うことができますか?あるいは、私はXamarin.Authではなく何か他のものを使うべきですか?

ありがとうございました。

+0

OAuth2Authenticatorの呼び出しについて、あなたが間違っていることを尋ねているので、その例も追加してください。 Xamarin.AuthはDropbox認証のために私のために働いています。 Microsoft Liveの場合、Xamarin.Authに実装されているものと比較して要求の処理に若干の偏差があるため、いくつか修正を加えなければなりませんでした。 また、使用しているXamarin.Authのバージョン情報を追加してください。 – eX0du5

+0

私にとっては、何らかの研究の後に、理解が簡単で、間違っている可能性があります。 私のバックエンドのOAuth2の実装には* Authorization *キーとハッシュ値を持つヘッダーが必要です。 問題は、Xamarin.Authがヘッダを渡すことができないことです - https://github.com/xamarin/Xamarin.Auth/issues/61 回避策はありますか? – Namek

+0

このプロジェクトのどのブランチを使用していますか?時代遅れのマスターブランチoder https://github.com/xamarin/Xamarin.Auth/tree/portable-bait-and-switchまた、Nuget Package(バージョン忘れてしまった場合はバージョン1.5)の基礎と思われます。 – eX0du5

答えて

1

は、ここで私は(Xamarin.Authを使用していない)それを行う方法は次のとおりです。

var client = new HttpClient(); 
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", tokenGoesHere); 

次にあなたが必要なものは何でも、お好きなコンテンツを追加し、/ポスト/ PutAsyncを取得することができます。

関連する問題