otpless/otpless-auth-sdk

用于后端PHP SDK的SDK,用于解决idToken等问题。

1.21.0 2024-06-04 12:15 UTC

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"
}