You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Shopify无密码账户在iOS端的登录实现问题

Shopify无密码账户在iOS端的登录实现问题

我之前也碰到过几乎一模一样的问题!折腾了好一阵才理顺,给你分享下我是怎么搞定的,重点解决你卡壳的redirect_uri配置和Customer Account API的使用问题:

首先,先解决你找不到redirect_uri配置入口的问题

你肯定是找错地方了!这个配置不在Shopify后台的通用设置里,得去自定义应用的配置页:

  • 登录Shopify后台,进入「设置」→「应用和销售渠道」
  • 点击「为你的店铺开发应用」,找到你正在用的自定义应用(如果还没有,先创建一个专属的私有应用)
  • 进入应用详情页后,切换到「配置」标签,往下滑找到「客户账户API」板块
  • 在这里就能添加你的iOS应用的redirect_uri了,格式必须是你的APP URL Scheme://自定义回调路径,比如com.yourapp.shopify://auth-callback,记下来这个地址,后面iOS端要用到

然后是iOS端的具体实现步骤

1. 配置Xcode项目的URL Scheme

打开你的iOS项目:

  • 选中Targets → 进入「Info」标签
  • 找到「URL Types」,点击+号添加一个
  • 「Identifier」随便填(比如shopify.auth),「URL Schemes」填你刚才在后台配置的前缀,比如com.yourapp.shopify

2. 发起无密码认证请求

不需要用Mobile Buy SDK的密码登录流程了,直接唤起系统浏览器(或者WKWebView)打开Customer Account API的授权地址,参数如下:

  • client_id:你的自定义应用的「API密钥」(在应用详情的「API密钥和密码」里找)
  • redirect_uri:就是你刚才配置的那个地址
  • scope:根据你的需求选权限,比如只需要读取客户信息就填read_customers,需要修改的话加write_customers,多个用空格分隔
  • response_type:固定填code(授权码模式)

用户在浏览器里会看到熟悉的「邮箱收验证码」登录界面,完成验证后会自动跳回你的APP。

3. 处理回调并获取Access Token

当APP被唤起时,在AppDelegateapplication(_:open:options:)或者SwiftUI的onOpenURL回调里,解析拿到的URL,提取其中的code参数(授权码)。
然后用这个授权码调用Customer Account API的令牌端点,传入client_idredirect_uricodegrant_type=authorization_code,就能拿到可用的access_token了。

4. 替换Mobile Buy SDK的认证逻辑

拿到这个access_token后,你完全可以用它来替代Mobile Buy SDK里需要的customerAccessToken——直接把这个token传入SDK的相关初始化方法或者API调用里,功能和原来的token是兼容的,这样就能正常操作客户账户了。

踩过的坑提醒你注意

  • redirect_uri必须前后完全一致!包括大小写、路径,差一个字符都会导致回调失败
  • 权限scope别贪多,只申请你实际需要的,不然用户授权时会有抵触
  • 如果用的是iOS 13+的SceneDelegate,要在scene(_:openURLContexts:)里处理回调,而不是AppDelegate
  • 测试的时候,确保你的自定义应用已经安装到店铺里,不然API调用会报错

如果某个步骤卡壳了,比如回调处理的代码细节,或者API请求的具体写法,随时说,我再给你补具体示例!

火山引擎 最新活动