gpt4 book ai didi

c# - 如何使用 OAuth 连接到 Etrade API?

转载 作者:IT王子 更新时间:2023-10-29 04:31:24 28 4
gpt4 key购买 nike

E-Trade 最近发布了他们的 API 并提供了 technical documentation which is somewhat useful but not complete .

有没有人有一个完整的 C# 示例来说明它是如何工作的?

我已经能够使用 OAuth 正确地进行身份验证,但是当涉及到从我的账户或市场数据中获取信息时,服务器出现故障。

最佳答案

我能够使用 DevDefined OAuth 库进行连接,但我必须对源进行一些调整才能使其正常工作。我 fork 了 repo,所以你可以下载我使用的 src,并为你构建一个 .dll。

repo :GitHub

示例类:

 public abstract class BaseOAuthRepository
{

private static string REQUEST_URL = "https://etws.etrade.com/oauth/request_token";
private static string AUTHORIZE_URL = "https://us.etrade.com/e/t/etws/authorize";
private static string ACCESS_URL = "https://etws.etrade.com/oauth/access_token";

private readonly TokenBase _tokenBase;
private readonly string _consumerSecret;

protected BaseOAuthRepository(TokenBase tokenBase,
string consumerSecret)
{
_tokenBase = tokenBase;
_consumerSecret = consumerSecret;
}

public TokenBase MyTokenBase
{
get { return _tokenBase; }
}

public string MyConsumerSecret
{
get { return _consumerSecret; }
}


public OAuthSession CreateSession()
{
var consumerContext = new OAuthConsumerContext
{
ConsumerKey = MyTokenBase.ConsumerKey,
ConsumerSecret = MyConsumerSecret,
SignatureMethod = SignatureMethod.HmacSha1,
UseHeaderForOAuthParameters = true,
CallBack = "oob"
};

var session = new OAuthSession(consumerContext, REQUEST_URL, AUTHORIZE_URL, ACCESS_URL);
return session;
}

public IToken GetAccessToken(OAuthSession session)
{
IToken requestToken = session.GetRequestToken();
string authorizationLink = session.GetUserAuthorizationUrlForToken(MyTokenBase.ConsumerKey, requestToken);
Process.Start(authorizationLink);
Console.Write("Please enter pin from browser: ");
string pin = Console.ReadLine();
IToken accessToken = session.ExchangeRequestTokenForAccessToken(requestToken, pin.ToUpper());

return accessToken;
}

public string GetResponse(OAuthSession session, string url)
{
IToken accessToken = MyTokenBase;

var response = session.Request(accessToken).Get().ForUrl(url).ToString();
return response;
}

public XDocument GetWebResponseAsXml(HttpWebResponse response)
{
XmlReader xmlReader = XmlReader.Create(response.GetResponseStream());
XDocument xdoc = XDocument.Load(xmlReader);
xmlReader.Close();
return xdoc;
}

public string GetWebResponseAsString(HttpWebResponse response)
{
Encoding enc = System.Text.Encoding.GetEncoding(1252);
StreamReader loResponseStream = new
StreamReader(response.GetResponseStream(), enc);
return loResponseStream.ReadToEnd();
}
}

关于c# - 如何使用 OAuth 连接到 Etrade API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3799323/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com