我在Square OAuth 流程中授权商家时遇到问题,并且在Objective-C中使用了AFNetworking 2.0。我打电话给方法' openURL'它打开了Square登录页面。从这里我可以作为商家登录,但它永远不会返回到应用程序。关于我需要做些什么以使其工作的建议和代码示例将非常感激,因为我在这里非常迷失。提前谢谢!
打开网址调用
' openURL'呼叫成功将用户重定向到' https://connect.squareup.com/oauth2/authorize'使用Safari上的客户端ID和重定向URL。登录并按下"允许"对于权限,它不会跳回应用程序。我试过的代码如下:
NSString *urlString= @"https://connect.squareup.com/oauth2/authorize";
NSString *clientID = @"client_id=[CLIENT_ID]";
NSString *responseType = @"response_type=code";
NSString *fullURL = [NSString stringWithFormat:@"%@?%@&%@", urlString, clientID, responseType];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:fullURL]];
我认为它可能与URLSchemes和URL标识符有关。 "重定向网址"在Square门户网站上与URL Scheme或URL标识符相同?我尝试了两者并且它没有工作。
举个例子,我的Info.plist中的以下值是否正确?我的网址方案单项是" iostestapp"我的URL标识符为" com.name.iostestapp"。 "重定向网址"广场门户网站是" https://com.name.iostestapp"。
除了我提供的代码之外还有什么需要吗?我已经看到很多关于在线OAuth的处理程序,但在Square文档中看不到。
答案 0 :(得分:2)
用户必须授权您的开发人员应用程序通过API访问其数据。为此,您必须引导用户通过Square提供的Oauth流程。以编程方式对此URL执行GET请求是不够的。您必须在Web浏览器中引导用户完成oauth流程。
您可以通过打开包含以下网址的网页向您的用户展示Oauth流:https://connect.squareup.com/oauth2/authorize?client_id=CLIENT_ID。 CLIENT_ID是您在Square开发人员门户中注册开发人员应用程序时提供的应用程序标识符。开发人员门户位于https://connect.squareup.com/apps。在开发人员门户中,您还必须指定oauth redirect_uri。在用户授权您的应用程序后,他们将被重定向到您使用访问令牌或单次使用代码指定的redirect_uri(可以由您交换访问令牌。)
另外,请注意,当您在开发人员门户中创建应用程序时,我们会为您提供一个"个人访问令牌"您可以使用它代表您自己的用户执行API调用并测试API。