0

Constant Contact API を使用してメーリング リストに新しい連絡先を追加しようとしています。シンプルな asp.net フォームがあり、次の関数を実行していますが、「リモート サーバーがエラーを返しました: (403) 許可されていません」というメッセージが表示されます。私の関数は Constant Contact から直接取得されますが、図を見てください!

常時連絡 API

Public Function AddContact(ByVal UserEmailAddress As String, ByVal ContactListNumber As Integer) As String
    Try
        Dim xml As String
        xml = "<?xml version='1.0' encoding='utf-8' ?>" & _
        "<entry xmlns='http://www.w3.org/2005/Atom'>" & _
            "<title type='text'></title>" & _
            "<updated>2008-07-23T14:21:06.407Z</updated>" & _
            "<author></author>" & _
            "<id>data:,none</id>" & _
            "<summary type='text'>Contact</summary>" & _
            "<content type='application/vnd.ctct+xml'>" & _
                "<Contact xmlns='http://ws.constantcontact.com/ns/1.0/'>" & _
                    "<EmailAddress>" & UserEmailAddress.ToString() & "</EmailAddress>" & _
                    "<OptInSource>ACTION_BY_CONTACT</OptInSource>" & _
                    "<ContactLists>" & _
                        "<ContactList id='http://api.constantcontact.com/ws/customers/[username]/lists/" & ContactListNumber.ToString() & "'/>" & _
                    "</ContactLists>" & _
                "</Contact>" & _
            "</content>" & _
        "</entry>"

        ' Set up the request
        Dim request As HttpWebRequest
        request = WebRequest.Create("https://api.constantcontact.com/ws/customers/[username]/contacts/")
        Dim byteData As Byte() = UTF8Encoding.UTF8.GetBytes(xml.ToString())
        request.Method = "POST"
        request.ContentType = "application/atom+xml"
        request.ContentLength = byteData.Length
        request.Credentials = New NetworkCredential("[api key]%[username]", "[password]")

        ' Send the request
        Dim postStream As Stream
        postStream = request.GetRequestStream()
        postStream.Write(byteData, 0, byteData.Length)

        Dim response As HttpWebResponse
        response = request.GetResponse()

    Catch ex As WebException
        Return ex.ToString
    End Try
End Function
4

1 に答える 1

0

常時接続の 403 エラーは、パスワードが間違っているか、パスワードの文字列が正しく構成されていないことを意味します。[your_api_key]%[your_constantcontact_username]:[password]認証のために指定します。彼らはこれが非推奨であると言っていますが、誰もが今すぐ (または少なくとも 2013 年より前に) oauth 2.0 に移行する必要があります。これで、パスワードを渡す必要がなくなります。

于 2012-11-09T02:21:38.557 に答える