5

DotNetOpenAuth を使用して Basecamp API で OAuth2 を機能させるのに苦労しています。これまでのところ、これは ASP.NET MVC 4 Web アプリです。

public ActionResult Basecamp()
{
    var server = new DotNetOpenAuth.OAuth2.AuthorizationServerDescription();
    server.AuthorizationEndpoint = new Uri("https://launchpad.37signals.com/authorization/new");
    server.TokenEndpoint = new Uri("https://launchpad.37signals.com/authorization/token");

    var client = new DotNetOpenAuth.OAuth2.WebServerClient(
        server, "my-basecamp-id", "my-basecamp-secret");

    client.RequestUserAuthorization(returnTo: new Uri("http://localhost:55321/settings/basecampauth"));
    Response.End();

    return null;
}

[HttpPost]
public ActionResult BasecampAuth()
{
    var server = new DotNetOpenAuth.OAuth2.AuthorizationServerDescription();
    server.AuthorizationEndpoint = new Uri("https://launchpad.37signals.com/authorization/new");
    server.TokenEndpoint = new Uri("https://launchpad.37signals.com/authorization/token");


    var client = new DotNetOpenAuth.OAuth2.WebServerClient(
        server, "my-basecamp-id", "my-basecamp-secret");

    var state = client.ProcessUserAuthorization(Request);
    Response.Write(state.AccessToken);
    Response.End();
    return null;
}

これは、Basecamp から取得したエラーです。

--- 
:error: "Unsupported type: nil. We support user_agent and web_server."

私は検索して周りを見回そうとしましたが、あまり興味深いものは見つかりませんでした. ヘルプ/ポインタをいただければ幸いです。

ありがとう

4

1 に答える 1

7

これを変える:

server.AuthorizationEndpoint = new Uri("https://launchpad.37signals.com/authorization/new");

これに:

server.AuthorizationEndpoint = new Uri("https://launchpad.37signals.com/authorization/new?type=web_server");

注: type=web_serveruri の末尾に追加しました。

これらの公式ドキュメントから取得します。

于 2013-07-05T12:05:58.943 に答える