Поставщик может позволить принимать у пользователя логин и пароль и преобразовывать их в маркер доступа (
accsss token). Но, как правило в целях безопасности, никто не дает такой возможности.
Попробуйте: если
grant_type будет
password, то данные пользователя можно передавать в параметрах
username и
password при получении маркера доступа. Либо использовать
grant_type равный
client_credentials, тогда данные пользователя должны передаваться в
HTTP заголовке
Authorization (при использовании
HTTPS это более безопасный способ, чем
password).
Например,
если бы Facebook позволял это делать, то запрос маркера доступа мог бы быть таким:
https://graph.facebook.com/oauth/access_token?client_id=123&client_secret=abc&
grant_type=password&username=pupkin&password=000
В
моей библиотеке пока нет возможности менять
grant_type снаружи, но можно внутри поменять. Например,
InstagramClient.cs, в конструкторе указать
GrantType:
base.GrantType = GrantType.ClientCredentials;
И далее использовать клиент:
var client = new InstagramClient
(
"9fcad1f7740b4b66ba9a0357eb9b7dda",
"3f04cbf48f194739a10d4911c93dcece"
);
client.ReturnUrl = "http://oauthproxy.nemiro.net/";
client.Username = "aleksey";
client.Password = "Frif#dser#23dssd@Dsdfjjfsi";
var accessToken = client.AccessToken;
И сервер ответит:
{"code": 400, "error_type": "OAuthException", "error_message": "Invalid grant_type"}
Плохой пример :P
А вот
Facebook, на удивление, вернул маркер доступа:
var client = new FacebookClient("1435890426686808", "c6057dfae399beee9e8dc46a4182e8fd");
client.Username = "aleksey";
client.Password = "a6lGmDZsCb1SuHsIQw89ZqK9";
var accessToken = client.AccessToken;
Но у меня сомнения, что поставщик просто так позволит это использовать кому попало, в реальных условиях, без ограничений. Наверняка придется жесткую проверку модератором проходить.