otpless / otpless-auth-sdk
用于后端PHP SDK的SDK,用于解决idToken等问题。
Requires
- firebase/php-jwt: ^5.0
- guzzlehttp/guzzle: ^7.0
- phpseclib/phpseclib: ^3.0
README
A. OTPLessAuth 依赖
在您的项目项目中安装以下依赖
composer require otpless/otpless-auth-sdk
您也可以在https://packagist.org.cn/packages/otpless/otpless-auth-sdk 获取依赖的最新版本
B. OTPLessAuth 类
OtplessAuth
类提供了将 OTPLess 认证集成到您的 PHP 后端应用程序中的方法。本文档解释了类的用法及其方法。
方法
1. decodeIdToken
此方法帮助解决由 OTPLess
签发的 idToken (JWT token)
,该令牌返回用户详情,同时此方法验证令牌是否有效,令牌不应过期,并且仅由 otpless.com
签发
方法签名
decodeIdToken(id_token, client_id, client_secret, audience=None)
方法参数
返回
返回:对象名称:UserDetail
{'success': True, 'auth_time': 1697649943, 'phone_number': '+9193******', 'email': 'dev***@gmail.com', 'name': 'Devloper From OTP-less', 'country_code': '+91', 'national_phone_number': '9313******'}
2. verify code
此方法帮助解决由 OTPLess
返回的 code
,该代码将返回用户详情,同时此方法验证代码是否有效,代码不应过期,并且仅由 otpless.com
签发
方法签名
verifyCode(code, client_id, client_secret)
方法参数
返回
返回:对象名称:UserDetail
{'success': True, 'auth_time': 1697649943, 'phone_number': '+9193******', 'email': 'dev***@gmail.com', 'name': 'Devloper From OTP-less', 'country_code': '+91', 'national_phone_number': '9313******'}
3. Verify Auth Token
此方法帮助解决由 OTPLess
签发的 token
,该令牌返回用户详情,同时此方法验证令牌是否有效,令牌不应过期,并且仅由 otpless.com
签发
方法签名
verifyToken(token, client_id, client_secret)
方法参数
返回
返回:对象名称:UserDetail
{'success': True, 'auth_time': 1697649943, 'phone_number': '+9193******', 'email': 'dev***@gmail.com', 'name': 'Devloper From OTP-less', 'country_code': '+91', 'national_phone_number': '9313******'}
4. Generate Magic link
授权端点通过向用户提供的联系信息发送 magic link
来启动身份验证过程,该链接用于验证用户的身份。用户对此链接采取行动后,他们将重定向到指定的 URI,并在重定向中包含授权代码。
方法签名
generateMagicLink(mobile_number, email, client_id, client_secret,redirect_uri,channel)
方法参数
返回
返回:对象名称:RquestIds
{"requestIds":[{"type":"MOBILE","value":"ac48690347c24c0b8b54270590392b2a"}],"success":true}
使用示例
require '../vendor/autoload.php'; use Otpless\OTPLessAuth; // Your ID token to decode $token = 'your token here'; $clientId = 'your client id here'; $clientSecret = 'your client secret here'; // Initialize the library class $auth = new OtplessAuth(); $auth->verifyToken($token,$clientId,$clientSecret);
5. Send OTP
此方法帮助向您的用户发送OTP,并且OTP仅由 otpless.com
签发
sendOtp(phoneNumber, email, orderId, expiry, hash, clientId, clientSecret, otpLength, channel)
方法参数
返回
{"success":true,"orderId":"V112444","refId":"108","message":"success"}
6. ReSend OTP
此方法帮助向您的用户重新发送OTP,并且OTP仅由 otpless.com
签发
resendOtp(orderId, clientId, clientSecret)
方法参数
返回
{"success":true,"orderId":"V112444","refId":"108","message":"success"}
7. Verify OTP
此方法帮助验证您的用户的OTP,并且OTP仅由 otpless.com
签发
方法签名
verifyOtp(phoneNumber,email, orderId, otp, clientId, clientSecret)
方法参数
{"success":true,"isOTPVerified":true}
8. Send OTP V2
此方法帮助向您的用户发送OTP,并且OTP仅由 otpless.com
签发
sendOtp(clientId, clientSecret, phoneNumber, email, expiry, hash, otpLength, channels, metadata)
方法参数
返回
200 OK
{ "requestId": "82b2891ce5394eeb837cc9d7850fef68" }
4XX
{ "message": "Invalid Request", "description": "Request error: OTP Length is invalid. 4 and 6 only allowed" }
9. verify otp V2
verifyOtp(clientId, clientSecret, requestId, otp)
方法参数
返回
200 OK
{ "requestId": "bb85a5e777004c0fa1d4a5dc6f053cce", "isOTPVerified": true, "message": "OTP verified successfully" }
4XX
{ "message": "Invalid Request", "description": "Request error: Invalid token/request Id" }
9. send magic link
generateMagicLink(clientId, clientSecret, phoneNumber, email, expiry, redirectURI, channels, metadata)
方法参数
返回
200 OK
{ "requestId": "c4db2da14be94f44b2de64753ab8c30b" }
4XX
{ "message": "Invalid Request", "description": "Request error: Invalid redirect URI" }
10. send otp link
generateOTPLink(clientId, clientSecret, phoneNumber, email, expiry, hash, otpLength, redirectURI, channels, metadata)
方法参数
返回
200 OK
{ "requestId": "df0228c84de845d2ab1f377d0f407c68" }
4XX
{ "message": "Invalid Request", "description": "Request error: Invalid phone number's channel" }
9. verify code
verifyCode(clientId, clientSecret, code)
方法参数
返回
200 OK
{ "requestId": "7bb4738eXXXXXXXXXX", "message": "Code verified successfully", "userDetails": { "token": "7bXX4738eXXXXXXXXXX", "timestamp": "2024-05-29T14:09:42Z", "identities": [ { "identityType": "MOBILE", "identityValue": "9195XXXXXXXX", "channel": "WHATSAPP", "methods": ["WHATSAPP"], "name": "XXX", "verified": true, "verifiedAt": "2024-05-29T14:09:01Z" } ], "network": { "ip": "35.154.XX.XXX", "timezone": "Asia/Kolkata", "ipLocation": { "city": { "name": "Mumbai" }, "subdivisions": { "code": "MH", "name": "Maharashtra" }, "country": { "code": "IN", "name": "India" }, "continent": { "code": "AS" }, "latitude": 11.0748, "longitude": 22.8856, "postalCode": "123456" } }, "deviceInfo": { "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Safari/605.1.15" } } }
4XX
{ "message": "Expired", "description": "Request error: Token is expired" }
11. initiateOAuth
initiateOAuth(clientId, clientSecret, channels, redirectURI, expiry, metadata)
方法参数
返回
200 OK
{ "requestId": "7bb4738e978XXXXXXX", "link": "whatsapp://send?phone=919XXXXXX&text=%E2%80%8E%E2%80%8C%E2%80%8E%E2%80%8E%E2%80%8E%E2%80%8C%E2%80%8D%E2%80%8B%E2%80%8B%E2%80%8B%E2%80%8D%E2%80%8C%E2%80%8E%E2%80%8B%E2%80%8B%E2%80%8ESend%20message%20to%20sign%20in" }
4XX
{ "message": "Invalid Request", "description": "Request error: Invalid redirect URI" }
12. check status
checkStatus($clientId, $clientSecret, $requestId)
方法参数
返回
200 OK
{ "token": "5b59fd875e6848d6bd1c97aefe83d8b5", "timestamp": "2024-05-30T08:12:18Z", "identities": [ { "identityType": "MOBILE", "identityValue": "9195XXXX3993", "channel": "WHATSAPP", "methods": ["WHATSAPP"], "name": "viKi!", "verified": true, "verifiedAt": "2024-05-30T08:11:24Z" } ], "network": { "ip": "13.235.XX.XXX", "timezone": "Asia/Kolkata", "ipLocation": { "city": { "name": "Mumbai" }, "subdivisions": { "code": "MH", "name": "Maharashtra" }, "country": { "code": "IN", "name": "India" }, "continent": { "code": "AS" }, "latitude": 11.0748, "longitude": 22.8856, "postalCode": "123456" } }, "deviceInfo": { "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Safari/605.1.15" } }
4XX
{ "message": "Invalid Request", "description": "Request error: Invalid token/request Id" }