首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用GoDaddy C#对C# API进行身份验证?

如何使用GoDaddy C#对C# API进行身份验证?
EN

Stack Overflow用户
提问于 2016-03-17 15:15:04
回答 3查看 3.2K关注 0票数 2

我已经在GoDaddy上设置了一个帐户,并有我的开发人员访问API的密钥。使用Fiddler,我能够构造一个返回结果的请求。但是,从控制台应用程序中使用以下代码会导致“未经授权”失败。我在两个地方都使用相同的地址和钥匙。

我遗漏了什么?

代码语言:javascript
运行
复制
        using (var client = new HttpClient())
        {
            client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Authorization", "sso-key VUjHMntw_UyosKRMGaLXE4e3E1h29Xx:DSqM2jiJcRyXvSbLehjYUZ");

            HttpResponseMessage response = await client.GetAsync("https://api.ote-godaddy.com/v1/domains/available?domain=google.com");

            if (response.IsSuccessStatusCode)
            {
                var result = await response.Content.ReadAsAsync<string>();
                Console.WriteLine(result);
            }
            else
            {
                Console.WriteLine(response.ReasonPhrase);
            }
        }

注意:授权密钥和秘密已被修改。

以下是我在Fiddler中所做的工作:

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-03-17 15:28:37

我相当肯定,您发送的auth标题是:

代码语言:javascript
运行
复制
Authorization: Authorization sso-key VUjHMntw_UyosKRMGaLXE4e3E1h29Xx:DSqM2jiJcRyXvSbLehjYUZ

试一试:

代码语言:javascript
运行
复制
client.DefaultRequestHeaders.Authorization = 
    new System.Net.Http.Headers.AuthenticationHeaderValue("sso-key", "VUjHMntw_UyosKRMGaLXE4e3E1h29Xx:DSqM2jiJcRyXvSbLehjYUZ");

方法调用为您分配Authorization:前缀。

票数 5
EN

Stack Overflow用户

发布于 2016-03-17 16:09:11

该特定调用不需要身份验证。这应该对你有用。

代码语言:javascript
运行
复制
    static void Main(string[] args)
    {
        TestDomain().Wait();
    }

    public static async Task<string> TestDomain()
    {

        using (var client = new HttpClient())
        {
            //client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Authorization", "sso-key VUjHMntw_UyosKRMGaLXE4e3E1h29Xx:DSqM2jiJcRyXvSbLehjYUZ");

            HttpResponseMessage response = await client.GetAsync("https://api.ote-godaddy.com/v1/domains/available?domain=google.com");

            if (response.IsSuccessStatusCode)
            {
                var result = await response.Content.ReadAsStringAsync();
                Console.WriteLine(result);

                return result;
            }
            else
            {
                Console.WriteLine(response.ReasonPhrase);

                return response.ReasonPhrase;

            }
        }

    }
票数 1
EN

Stack Overflow用户

发布于 2019-01-28 18:26:44

为GoDaddy注册的“Visual Basic”控制台应用程序(这似乎只适用于生产密钥、秘密和URL ),例如“使用”您想要在家中承载域名(例如ISP = Cox电缆),但是您有一个动态IP地址,而不是静态的‘每分钟调用这个例程一次(GoDaddy有每小时60次的限制),它将更改GoDaddy上的一个记录,指向您家里的新IP。

模块Module1

代码语言:javascript
运行
复制
Const DEFAULT_IP_ADDRESS As String = "0.0.0.0"
Const GODADDYKEY_AND_SECRET As String = "GoDaddyKeyGoesHere:GoDaddySecretGoesHere"  'key:secret  Get this from GoDaddy API.  Use Production (not test)
Public objGoDaddyResult As Object = Nothing

Public vbWhack As String = "\"

Sub Main()
    Dim sCurrentCoxIPAddress As String
    Dim sCurrentARecordIPAddress As String

    sCurrentCoxIPAddress = GetExternalIPMain()          ' Calls up to three "services" to get you public-facing IP address

    If sCurrentCoxIPAddress <> DEFAULT_IP_ADDRESS Then
        Console.WriteLine(sCurrentCoxIPAddress)
        ' Call GoDaddy API to get what the current A Record is set to
        GetGoDaddyARecord().Wait()
        sCurrentARecordIPAddress = ghExtract(Trim(objGoDaddyResult.ToString), ghEscape("\034Data\034:\034"), ghEscape("\034,\034name\034"))
        Console.WriteLine(sCurrentARecordIPAddress)

        If sCurrentCoxIPAddress = sCurrentARecordIPAddress Then
            Console.WriteLine("IP Addresses match, nothing to do")
        Else
            Console.WriteLine("Cox dynamically changed my IP.  Changed A Record at GoDaddy")
            'Call GoDaddy API to Change A Record.
            PutGoDaddyARecord(sCurrentCoxIPAddress).Wait()
        End If
        Console.WriteLine(objGoDaddyResult)
    Else
        Console.WriteLine("Could not find IP address after looking at three Websites")
    End If

    Console.ReadKey()
    End

End Sub

Private Async Function GetGoDaddyARecord() As Task(Of String)
    Dim MyWebClient = New Net.Http.HttpClient()
    Dim msgResponseMessage As Net.Http.HttpResponseMessage

    Const GODADDY_API_CALL As String = "https://api.godaddy.com/v1/domains/" & YOUR_DOMAIN_NAME_HERE & "/records/A/@"

    MyWebClient.DefaultRequestHeaders.Authorization = New Net.Http.Headers.AuthenticationHeaderValue("sso-key", GODADDYKEY_AND_SECRET)
    msgResponseMessage = Await MyWebClient.GetAsync(GODADDY_API_CALL)

    If msgResponseMessage.IsSuccessStatusCode = True Then
        objGoDaddyResult = Await msgResponseMessage.Content.ReadAsStringAsync()
    Else
        objGoDaddyResult = msgResponseMessage.ReasonPhrase
    End If

    Return objGoDaddyResult

End Function


Private Async Function PutGoDaddyARecord(ByVal strNewARecord As String) As Task(Of String)
    Dim sGoDaddyData As String
    Dim wcWebClient = New Net.Http.HttpClient()
    Dim scStringContent As Net.Http.StringContent
    Dim msgGoDaddyResponse As Net.Http.HttpResponseMessage
    Dim uriMyURI As Uri

    Const GODADDY_API_CALL As String = "https://api.godaddy.com/v1/domains/" & YOUR_DOMAIN_NAME_HERE & "/records/A/@"
    Const GODADDY_DATA As String = "[{\034data\034:\034[[NEW_A_RECORD]]\034}]"
    sGoDaddyData = Replace(GODADDY_DATA, "[[NEW_A_RECORD]]", strNewARecord,,, CompareMethod.Text)
    sGoDaddyData = ghEscape(sGoDaddyData)
    uriMyURI = New Uri(GODADDY_API_CALL)
    scStringContent = New Net.Http.StringContent(sGoDaddyData, Text.UnicodeEncoding.UTF8, "application/json")

    wcWebClient.DefaultRequestHeaders.Authorization = New Net.Http.Headers.AuthenticationHeaderValue("sso-key", GODADDYKEY_AND_SECRET)
    msgGoDaddyResponse = Await wcWebClient.GetAsync(GODADDY_API_CALL)

    If msgGoDaddyResponse.IsSuccessStatusCode = True Then
        msgGoDaddyResponse = Await wcWebClient.PutAsync(uriMyURI, scStringContent)
        objGoDaddyResult = msgGoDaddyResponse.ReasonPhrase
    Else
        objGoDaddyResult = msgGoDaddyResponse.ReasonPhrase
    End If

    Return objGoDaddyResult

End Function

'
' Calls three websites
' This is more a robust approach because it scrapes somebody else's website and we have no control over their future changes.
'
Private Function GetExternalIPMain() As String
    Dim sReturn As String = DEFAULT_IP_ADDRESS

    sReturn = GetExternalIP1()
    If sReturn = DEFAULT_IP_ADDRESS Then
        sReturn = GetExternalIP2()
        If sReturn = DEFAULT_IP_ADDRESS Then
            sReturn = GetExternalIP3()
            If sReturn = DEFAULT_IP_ADDRESS Then
                'Console.ReadKey()
            End If
        End If
    End If

    Return Trim(sReturn)
End Function


' [1 of 3] feron.it
Private Function GetExternalIP1() As String
    Const WEB_PAGE_WITH_MYIP As String = "http://tools.feron.it/php/ip.php"
    Dim sReturn As String = DEFAULT_IP_ADDRESS
    Dim MyWebClient As Net.WebClient = New Net.WebClient()

    Try
        sReturn = MyWebClient.DownloadString(WEB_PAGE_WITH_MYIP)
    Catch ex As Exception

    End Try

    Return sReturn
End Function

' [2 of 3] dyndns.org
Private Function GetExternalIP2() As String
    Const WEB_PAGE_WITH_MYIP As String = "http://checkip.dyndns.org/"
    Const BEGIN_SCRAPE_STRING As String = "Current IP Address: "
    Const END_SCRAPE_STRING As String = "</body>"

    Dim sReturn As String = DEFAULT_IP_ADDRESS
    Dim MyWebClient As Net.WebClient = New Net.WebClient()
    Dim sPageContents As String = ""

    Try
        sPageContents = MyWebClient.DownloadString(WEB_PAGE_WITH_MYIP)
    Catch ex As Exception

    End Try

    If Len(sPageContents) > 0 Then
        sReturn = ghExtract(sPageContents, BEGIN_SCRAPE_STRING, END_SCRAPE_STRING)
    End If

    Return sReturn
End Function

' [3 of 3] ap-adress.com
Private Function GetExternalIP3() As String
    Const WEB_PAGE_WITH_MYIP As String = "http://www.ip-adress.com/"
    Const BEGIN_SCRAPE_STRING As String = "Your IP address is: <strong>"
    Const END_SCRAPE_STRING As String = "</strong>"

    Dim sReturn As String = DEFAULT_IP_ADDRESS
    Dim MyWebClient As Net.WebClient = New Net.WebClient()
    Dim sPageContents As String = ""

    Try
        sPageContents = MyWebClient.DownloadString(WEB_PAGE_WITH_MYIP)
    Catch ex As Exception

    End Try

    If Len(sPageContents) > 0 Then
        sReturn = ghExtract(sPageContents, BEGIN_SCRAPE_STRING, END_SCRAPE_STRING)
    End If

    Return sReturn
End Function

' Function I like
Private Function ghExtract(ByVal strString As String, ByVal strBegin As String, ByVal strEnd As String) As String
    Dim sReturn As String = ""

    Dim iTempBegin As Integer = InStr(strString, strBegin, CompareMethod.Text) + Len(strBegin)
    Dim iTempEnd As Integer = InStr(strString, strEnd, CompareMethod.Text)
    If iTempEnd > iTempBegin Then
        sReturn = Strings.Mid(strString, iTempBegin, iTempEnd - iTempBegin)
    End If

    Return sReturn

End Function

' Function I like
Public Function ghEscape(ByVal strString As String) As String
    Dim i As Integer
    If ghInstrBinary(strString, vbWhack) = True Then
        For i = 1 To 254
            strString = Replace(strString, vbWhack & Strings.Right("00" & i.ToString, 3), Chr(i),,, CompareMethod.Binary)
        Next
    End If
    Return strString
End Function

' Function I like
Function ghInstrBinary(ByVal strString As String, strSearchString As String) As Boolean
    Dim bReturn As Boolean = False
    If InStr(strString, strSearchString, CompareMethod.Binary) > 0 Then
        bReturn = True
    End If
    Return bReturn
End Function

终端模块

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36064672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档