1

我通过传递 API Key 和 API Secret 来访问 Nexmo API。Nexmo 使用 OAuth 1.0a,我已经设法使用 DotNetOpenAuth 检索访问令牌和令牌秘密。我以前没有使用过 Nexmo 的经验。我想知道如何使用 Access Token 和 Token Secret 而不是 API Key 和 API Secret。在 nexmo 网站上,对此没有太多帮助。在 URl ( https://labs.nexmo.com/#oauth )的底部写有一行,上面写着“用 OAuth 参数替换“api_key”和“api_secret”。我不知道该怎么做。有人知道吗?

嗨,我看过 PHP 示例,但对它了解不多。可能是我没有完全理解 OAuth。我正在使用 DotNetOpenAuth 与 Nexmo 网站进行签名。以下是我到目前为止使用的代码,

Dim consumer3 As New DesktopConsumer(NexmoDescriptionService.Description,  NexmoDescriptionService.TokenManager)

Dim requestToken As String = ""
consumer3.RequestUserAuthorization(Nothing, Nothing, requestToken)

Dim extraParameters = New Dictionary(Of String, String) From {{"request_token", requestToken}}

consumer3 = New DesktopConsumer(NexmoDescriptionService.Description.UserAuthorizationEndpoint, NexmoDescriptionService.TokenManager)
Dim test = consumer3.RequestUserAuthorization(extraParameters, Nothing, requestToken)

Dim request As System.Net.HttpWebRequest = consumer3.PrepareAuthorizedRequest(NexmoDescriptionService.Description.RequestTokenEndpoint, requestToken)

我使用了桌面消费者类,因为无法使用 WebConsumer。

4

1 回答 1

0

这里有一个截屏,使用 PHP,它应该与 C# 大致相同。你真的不想自己管理 OAuth 签名,找到一个很好的 C# 库来为你做这件事,然后通过它发出请求。

示例和库可能会有所帮助。在示例的最后,它显示了在会话设置为使用访问令牌后调用 google。您只需使用 Nexmo 完成类似的过程:

// make a request for a protected resource
string responseText = session.Request().Get().ForUrl("http://www.google.com/m8/feeds/contacts/default/base").ToString();

至于一般的 OAuth,流程本质上是:

  • 从服务获取请求令牌(在本例中为 Nexmo)。该请求令牌与您已经拥有的应用程序凭据相匹配(您可以从 Nexmo 仪表板创建这些凭据)。

  • 重定向到用户以授权该请求令牌。此时,您只需等待用户使用授权令牌重定向回来。

  • 当用户使用授权令牌重定向回来时,将其换成长期使用令牌,并存储凭据(您将在需要代表用户帐户发出请求的任何时候使用这些凭据)。

在大多数情况下,OAuth 客户端库处理所有细节,您的应用程序只需要关注高级流程。

您可以在OAuth 站点上找到有关 OAuth 流程的更多信息。

于 2013-06-01T13:43:15.193 回答