我正在尝试使用官方的aweber gem将我的Rails应用程序与Aweber通过OAuth集成.
如果我在Rails控制台中关注他们的流程,我可以获得访问令牌,没有问题:
oauth = AWeber::OAuth.new(ENV["AWEBER_CONSUMER_KEY"], ENV["AWEBER_CONSUMER_SECRET"])
puts oauth.request_token.authorize_url
# => https://auth.aweber.com/1.0/oauth/authorize?oauth_token=xxxxxxxxxxxxxx
Run Code Online (Sandbox Code Playgroud)
然后我访问该URL,输入我的凭据,获取验证码,然后返回rails控制台:
oauth.authorize_with_verifier 'xxxxxx'
# => #<OAuth::AccessToken>
Run Code Online (Sandbox Code Playgroud)
成功!
问题是,我想在现实世界中这样做,而不仅仅是在控制台上,这意味着我的Ruby代码需要分解为两个单独的操作.首先,控制器操作重定向到Aweber的Oauth页面:
def aweber
oauth = AWeber::OAuth.new(ENV["AWEBER_CONSUMER_KEY"], ENV["AWEBER_CONSUMER_SECRET"])
redirect_to oauth.request_token(oauth_callback: "http://127.0.0.1:3000/auth/aweber/callback").authorize_url
end
Run Code Online (Sandbox Code Playgroud)
然后是用户输入其凭据并被重定向后获取访问令牌的操作:
def aweber_callback
oauth = AWeber::OAuth.new(ENV["AWEBER_CONSUMER_KEY"], ENV["AWEBER_CONSUMER_SECRET"])
oauth.authorize_with_verifier(params[:oauth_verifier])
end
Run Code Online (Sandbox Code Playgroud)
当我这样做时,最后一行(authorize_with_verifier)总是提升#<OAuth::Unauthorized: 401 Unauthorized>.
似乎问题是我正在初始化oauth变量两次,这意味着我有两个不相关的实例AWeber::Oauth...而且只有生成authorize_url的AWeber :: Oauth实例才能获得访问令牌.但我无法在两者中获得相同的实例aweber_callback,aweber因为我正在处理两个完全不同的线程和控制器实例.
当我检查时oauth,我可以看到内部变量oauth.request_token.params["oauth_token"]并且oauth.request_token.params["oauth_token_secret"]每个变量都不同oauth,我猜这是导致问题的原因.我可以oauth_token从params(params[:oauth_token])获得'正确' ,但我无法弄清楚如何获得正确的oauth_token_secret(更不用说手动设置这样的实例变量感觉非常 hacky并且可能不是最好的方法.)
如何生成访问令牌?
我们正在使用这段代码通过oAuth向aweber发送请求
long unixTime = System.currentTimeMillis() / 1000L;
OAuthRequest request1 = new OAuthRequest(Verb.GET,"https://api.aweber.com/1.0/accounts/1111/lists/1111/subscribers", service);
request1.addBodyParameter("ws.op", "create");
request1.addBodyParameter("email", "account@gmail.com");
request1.addBodyParameter("name", "ankur");
request1.addBodyParameter("oauth_token_secret", "mysecret");
request1.addBodyParameter("oauth_token", "mytoken");
request1.addBodyParameter("oauth_consumer_key", "mykey");
request1.addBodyParameter("oauth_signature_method", "HMAC-SHA1");
request1.addBodyParameter("oauth_nonce", "secret");
request1.addBodyParameter("oauth_timestamp", String.valueOf(unixTime));
service.signRequest(accessToken, request1);
Response response1 = request1.send();
// Create a reader to read Twitter's stream
BufferedReader reader1 = new BufferedReader(new InputStreamReader(response1.getStream()));
String line;
while ((line = reader1.readLine()) != null) {
System.out.println(line);
}
Run Code Online (Sandbox Code Playgroud)
但我们正在回应这个问题
{
"error": {
"status": 401,
"documentation_url": "https://labs.aweber.com/docs/troubleshooting#unauthorized",
"message": "Invalid signature. Expected signature base string: GET%26https%3A%2F%2Fapi.aweber.com%2F1.0%2Faccounts%2F1111%2Flists%2F1111%2Fsubscribers%26oauth_consumer_key%3Dmykey%26oauth_nonce%3Dnonce%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1461676770%26oauth_token%3Dmytoken%26oauth_version%3D1.0%20https%3A%2F%2Flabs.aweber.com%2Fdocs%2Ftroubleshooting%23unauthorized",
"type": "UnauthorizedError" …Run Code Online (Sandbox Code Playgroud) 我试图将信息从 aweber 传递到我的感谢页面,但由于某些原因,只有 name 参数不起作用,它会产生 404 错误。
其他所有 URL 参数都可以完美运行(例如 ?email=yourmail&birthday=02/05/1982 ),但名称导致此 404 错误。
这个问题发生在我的登陆页面上,所以我决定尝试使用根 url ( www.mydomain.com/?name=paul ) 并且它也会产生 404 错误..
有人能帮我吗 ?
提前致谢。
你可以在这里查看:https: //labs.aweber.com/docs/code_samples/subs/create
通过api将新订阅者添加到列表的脚本需要这两个部分信息...只有我无法弄清楚这两个变量是什么!我已经击败了我的Aweber Subscriber账户和我的Aweber Labs账户的每个小方面......而且我无法在任何地方找到任何这些变量的参考.我已经向他们提交了一些门票,但还没有得到任何答复.
有人有任何想法吗?我已经尝试了我的帐户名,我的名单,但无济于事!
~~~~~~~~~~~~~~~~~~~~~~~~~~~
好的,我知道了!您可以通过在进行某些api调用后在aweber api中转储一些其他变量来获取这两个变量的值.
首先获取帐户ID:
$account = $aweber->getAccount($accessKey, $accessSecret);
Run Code Online (Sandbox Code Playgroud)
然后是vardump或print_r $帐户.
接下来我们得到列表ID:
$account = $aweber->getAccount($accessKey, $accessSecret);
$list_url = 'https://api.aweber.com/1.0/accounts/<id>/lists';
$lists = $account->loadFromUrl($list_url);
Run Code Online (Sandbox Code Playgroud)
然后是vardump或print_r $列表.
你们都准备好了!我很高兴我把它搞清楚了,它花了足够长的时间.希望这可以节省一些时间.
我正在尝试使用PHP SDK从AWeber列表中检索特定订阅者.
码:
$subscribers = $account->loadFromUrl("/accounts/$account->id/lists/$list_id/subscribers");
var_dump($subscribers->find(array('email' => $email))); exit;
Run Code Online (Sandbox Code Playgroud)
问题是,我收到以下错误:
WebServiceError: Method requires access to Subscriber information.
Run Code Online (Sandbox Code Playgroud)
谷歌空手而归.
我想在C#windows应用程序中访问我的Aweber帐户详细信息和我的电子邮件列表.那么,请让我知道如何才能实现这一目标?
我得到了http://thecodenode.com/AweberCSharpNetSample.aspx,但我还在等待带有源代码的邮件.
等待回应.
谢谢卡皮尔
我第一次使用Aweber.当我使用Aweber API时,我在某些时候陷入困境.下面是解释我的问题的步骤:
我在Aweber实验室创建了一个帐户并在那里创建了应用程序.我还从那里检索了Consumer Key,Application Id和Consumer Secret并放入我的demo.php.
当我运行这个文件时,我有一个带有登录名/密码的表单:
请看以下网址:
https://auth.aweber.com/1.0/oauth/authorize?oauth_token=Aq2I3AD7yh7wKBGMGs2pALaP
现在我的问题是哪个帐户的用户/通行证需要在这里写.我尝试使用Aweber实验室帐户详细信息,其中显示"通知:凭据无效 - 请重试".
我应该去那里"https://www.aweber.com/order.htm"并创建付费帐户来填补那里.
请尽快给出你的建议.
带着敬意
我在https://labs.aweber.com/apps上创建了一个应用程序,并在他们的github上下载php代码https://github.com/aweber/AWeber-API-PHP-Library.我读过他们的文档,但不是那么清楚.我不知道如何开始或先做什么.我只是一个初学者,我以前从未做过应用程序.
我尝试首先在我的页面上创建PHP脚本,希望在提交表单时能够满足所需的功能,但什么都没发生.我联系他们的支持,但他们建议制作一个应用程序,使其正常工作.
Web表单提交的流程是这样的.在主页中,用户可以输入其名称,电子邮件,电话,并且有两个无线电选项可供选择,当您选择一个时,它将重定向到另一个页面并再次填写表格并提交.我为主页和第二页创建了一个Web表单.当您在第二页上提交表单时,它应该在主页上获取详细信息(名称,电子邮件,电话和选项选择),我得到了它的工作.但是当我在我的Aweber帐户上的订阅者上查看时,第二页中的字段都是空白的.主页上的字段已经完成,每当我在第二页上填写表格并提交时,Aweber说页面已被阻止.
他们建议我为此创建一个应用程序.但我不知道如何开始,因为他们的文档是令人难以置信的.
如果你能帮助我,我真的很感激.
谢谢!