OAuth в C# как клиент

Мне дали 6 битов информации для доступа к некоторым данным из веб-сайта:

  1. Веб-сайт URL Json (например: http://somesite.com/items/list.json)
  2. URL авторизации OAuth (например: http://somesite.com/oauth/authorization)
  3. URL запроса OAuth (например: http://somesite.com/oauth/request)
  4. URL доступа OAuth (например: http://somesite.com/oauth/access)
  5. Клиентский ключ (например: 12345678)
  6. Клиентский Секрет (например: abcdefghijklmnop)

Теперь, я посмотрел на библиотеки DotNetOpenAuth и OAuth.NET, и в то время как я уверен, что они очень способны к выполнению, в чем я нуждаюсь, я просто не могу выяснить, как использовать любого таким образом.

Мог кто-то отправлять некоторый пример кода того, как использовать URL (Точка 1.) или в библиотеке (или в каком-либо другом пути, который может работать точно также)?

Спасибо!

6
задан Redth 12 May 2010 в 19:20
поделиться

1 ответ

Для OAuth 2.0:

Я узнал, что проще всего просто разместить страницу аутентификации в окне HTML, а затем перехватить возвращенный access_token. Затем вы можете сделать это, используя клиентский веб-браузер.

Например, в MonoTouch это будет:

//
// Present the authentication page to the user
//
var authUrl = "http://www.example.com/authenticate";
_borwser.LoadRequest (new NSUrlRequest (new NSUrl (authUrl)));

//
// The user logged in an we have gotten an access_token
//
void Success(string access_token) {

    _web.RemoveFromSuperview();

    var url = "http://www.example.com/data?access_token=" + access_token;

    // FETCH the URL as needed
}

//
// Watch for the login
//
class Del : UIWebViewDelegate
{
    public override void LoadingFinished (UIWebView webView)
    {
        try {
            var url = webView.Request.Url.AbsoluteString;
            var ci = url.LastIndexOf ("access_token=");
            if (ci > 0) {
                var code = url.Substring (ci + "access_token=".Length);
                _ui.Success (code);
            }
        } catch (Exception error) {
            Log.Error (error);
        }
    }
}
1
ответ дан 17 December 2019 в 00:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: