WooCommerce iOS OAuth无效签名
当从iOS应用程序发送请求到WooCommerce api时,许多人一直在寻找解决无效签名问题的方法。
我在这里把解决scheme放在一起。
我从iOS应用程序向WooCommerce API发送请求时提供了无效签名问题的解决scheme。
要在iOS应用程序中使用WooCommerce,请求必须使用OAuth 1.0进行身份validation。 在iOS中,无论应用程序是使用Objective-C还是Swift编写,AFNetworking在编写请求时都会使生活更轻松。
按照以下步骤设置您的请求:
- 获取URL,OAuth 1.0消费者密钥和消费者密钥准备就绪。
-
使用Cocoapods将AFNetworking添加到您的项目中。 您的podfile将如下所示:
source 'https://github.com/CocoaPods/Specs.git' platform :ios, '9.0' target 'OAuthSample3' do use_frameworks! # Pods for OAuthSample3 pod 'AFNetworking', '1.3.4' end
将其保存在您的项目目录中并在terminal中运行
pod install
。
下一步,我们必须安装AFNetworking 1.3.4。 这就是为什么它在podfile中说1.3.4。 -
接下来,从github下载这个项目: https : //github.com/khanghoang/-WooClient
解压缩并将AFOAuth1Client.h
,AFOAuth1Client.m
,AFOAuth1OneLeggedClient.h
,AFOAuth1OneLeggedClient.m
,AFOAuth1OneLeggedClientWooParser.h
,AFOAuth1OneLeggedClientWooParser.m
到您的项目中。 -
现在我们需要修改这些文件。 打开
AFOAuth1Client.h
并findAFHMACSHA1Signature()
方法。
寻找这些线:// one-legged if(![secret isEqualToString:@""]) { secretString = [secretString stringByAppendingFormat:@"&%@", AFPercentEscapedQueryStringPairMemberFromStringWithEncoding(secret, stringEncoding)]; }
并将其replace为:
// one-legged secretString = [secretString stringByAppendingFormat:@"&"];
-
而已! 这将解决这个问题。
在你的视图控制器中,你可以这样做:
- (void)viewDidLoad { [super viewDidLoad]; AFOAuth1OneLeggedClient *client = [[AFOAuth1OneLeggedClient alloc] initWithBaseURL:[NSURL URLWithString:PATH] key:OAUTH_CONSUMER_KEY secret:OAUTH_CONSUMER_SECRET]; [client getPath:@"orders" parameters:@{} success:^(AFHTTPRequestOperation *operation, id responseObject) { } failure:^(AFHTTPRequestOperation *operation, NSError *error) { }]; }
您可以在字典中添加参数。 OAUTH_CONSUMER_KEY
和OAUTH_CONSUMER_SECRET
必须由您在第一步中收集的值replace。
你也可以在Swift中做到这一点。 只需使用桥接头来导入AFNetworking文件。
非常感谢khanghoang在AFOAuth1Client上的突破。
将@Akilan Arasu的解答添加到WooCommerce的“列出产品”中
按照上述解决scheme的前四个步骤,从WooCommerce的第五步列出产品将迅速
let client = AFOAuth1OneLeggedClient.init(baseURL: NSURL(string:"http://example.com/wc-api/v3/"), key: "ck_xxxxxx ",secret: "cs_xxxxx") client.getPath("products", parameters: nil, success: { (operation, responseObject ) in let responseArray = responseObject as? NSDictionary print(responseArray) let product = responseArray?.valueForKey("products") as! NSArray print("JSON: " + responseObject.description) }, failure: { (operation, error) in print("Error: " + error.localizedDescription) })
- 从Google / Facebook帐户重新validation用户
- OAuth2login到SoundCloud最近返回错误域= NXOAuth2HTTPErrorDomain代码= 401“HTTP错误:401”
- Tumblr OAuth图片文章给我401 /“无效的OAuth凭证”
- oauth 2.0 webview ios sdk
- iOS上的Twitter请求令牌无效
- 使用iOS的OAuthConsumer将图像上传到tumblr
- STTwitter CFNetwork内部错误NSURLRequest
- 保存当前的GIDGoogleUser,而不是在每次启动时login
- 如何在使用Facebook iPhone SDK时刷新oauth标记