{"id":32274173,"url":"https://github.com/devcrew-io/snapchat_loginkit","last_synced_at":"2026-02-22T18:01:30.871Z","repository":{"id":225095873,"uuid":"744480715","full_name":"DevCrew-io/snapchat_loginkit","owner":"DevCrew-io","description":"Flutter plugin for integrating Snapchat LoginKit, providing a seamless authentication experience in Flutter apps.","archived":false,"fork":false,"pushed_at":"2024-03-06T13:48:03.000Z","size":2084,"stargazers_count":6,"open_issues_count":1,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-10-22T23:39:37.011Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DevCrew-io.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2024-01-17T11:42:08.000Z","updated_at":"2025-03-18T14:05:56.000Z","dependencies_parsed_at":"2024-03-12T10:46:08.109Z","dependency_job_id":null,"html_url":"https://github.com/DevCrew-io/snapchat_loginkit","commit_stats":null,"previous_names":["devcrew-io/snapchat_loginkit"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/DevCrew-io/snapchat_loginkit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DevCrew-io%2Fsnapchat_loginkit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DevCrew-io%2Fsnapchat_loginkit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DevCrew-io%2Fsnapchat_loginkit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DevCrew-io%2Fsnapchat_loginkit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DevCrew-io","download_url":"https://codeload.github.com/DevCrew-io/snapchat_loginkit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DevCrew-io%2Fsnapchat_loginkit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29721048,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-22T15:10:41.462Z","status":"ssl_error","status_checked_at":"2026-02-22T15:10:04.636Z","response_time":110,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-10-22T23:32:20.635Z","updated_at":"2026-02-22T18:01:30.863Z","avatar_url":"https://github.com/DevCrew-io.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# snapchat_loginkit\n[![pub package](https://img.shields.io/pub/v/snapchat_loginkit.svg)](https://pub.dev/packages/snapchat_loginkit)\n[![license](https://img.shields.io/badge/license-MIT-green)](https://github.com/DevCrew-io/snapchat_loginkit/blob/main/LICENSE)\n![](https://img.shields.io/badge/Code-Dart-informational?style=flat\u0026logo=dart\u0026color=29B1EE)\n![](https://img.shields.io/badge/Code-Flutter-informational?style=flat\u0026logo=flutter\u0026color=0C459C)\n\nA Flutter plugin for integrating Snapchat login kit into your Flutter applications, allowing users to log in with their Snapchat accounts.\n\n## Features\n- **Snapchat login:** Enable users to log in to your app using their Snapchat credentials.\n- **Subscribe / Unsubscribe to Login State Updates:** Subscribe or Unsubscribe to updates about the success of the login process.\n- **Send Requests to Get User Data**: After Successful login, Get the user information such as displayName, AvatarUrl, AvatarId, externalId, tokenId and profileLink.\n- **Query Login State**: Check if the user is already logged in to Snapchat.\n- **Fetch Access Token**: Retrieve the access token after a successful login, which can be used to make API calls to Snapchat on behalf of the user.\n- **Access To Scope**: Check if the user has granted access to a specific scope (permission) in their Snapchat account.\n- **Login With Firebase**: Integrate Firebase authentication with Snapchat login, allowing users to log in to your app using Firebase authentication after logging in with Snapchat.\n\n![Alt text](https://github.com/DevCrew-io/snapchat_loginkit/assets/93918747/f981ec1c-1cf6-42be-9e9a-a780036e6aed)\n\n## Getting Started\nFirst thing first, you must login to your developer account on [Snapchat Developers portal](https://developers.snap.com/) and get your **Client ID** for the app. For more information you can read the docs [Login Kit](https://docs.snap.com/snap-kit/login-kit/overview).\n\n#### CAUTION\n The **Client ID** is different for **Production** and **Staging** environment. So be careful to use the correct values.\n **Note:** To use **Production** Client ID, your snapchat app should be approved and live on snapchat developer portal. [Read more](https://docs.snap.com/camera-kit/app-review/release-app) about submitting app for review.\n\n## Configuration\nIt is necessary to perform platform-specific configuration setups first.\n\n## Understand Scopes\n[Snapchat Scopes](https://docs.snap.com/snap-kit/login-kit/Tutorials/android#understand-scopes) let your application declare which Login Kit features it wants access to. If a scope is toggleable, the user can deny access to one scope while agreeing to grant access to others.\n\n## Android\nIn **:android** module, define `snap_connect_scopes` as an Android resource array in [`values/arrays.xml`](https://developer.android.com/guide/topics/resources/providing-resources#table1).\n\nDefine the following values in `local.properties` file under  **:android** module.\n\n```properties\n#sdk.dir=PATH_TO_ANDROID_SDK  \n\n# staging env for snapkit\n# Your app’s client id\ncom.snap.kit.clientId=YOUR_APP_CLIENT_ID\n\n# The url that will handle login completion\ncom.snap.kit.redirectUrl=REDIRECT_URL\n\n# Enter the parts of your redirect url below\n# e.g., if your redirect url is myapp://snap-kit/oauth2\n# android:scheme=\"myapp\"\n# android:host=\"snap-kit\"\n# android:path=\"oauth2\"\ncom.snap.kit.scheme=SCHEME\ncom.snap.kit.host=HOST\ncom.snap.kit.path=PATH\n\n# Set the firebase custom token url\ncom.snap.kit.firebaseExtCustomTokenUrl=FIREBASE_CUSTOM_TOKEN_URL\n```\nInside the app's `build.gradle` use [manifestPlaceholders](https://developer.android.com/build/manage-manifests#inject_build_variables_into_the_manifest) attribute to pass these values to login kit. Read more about [configuring build types](https://developer.android.com/build/build-variants#build-types) in android.\n- Depending on your requirements, you can either setup only one configuration for  all `productFlavors`\n```groovy\nandroid {\n\tdefaultConfig {\n\t\tmanifestPlaceholders = [  \n                    SNAP_CLIENT_ID           : localProperties.getProperty(\"com.snap.kit.clientId\"),\n                    SNAP_REDIRECT_URL        : localProperties.getProperty(\"com.snap.kit.redirectUrl\"),\n                    SNAP_SCOPES_ARRAY        : \"@array/snap_connect_scopes\",\n                    SNAP_REDIRECT_HOST       : localProperties.getProperty(\"com.snap.kit.host\"),\n                    SNAP_REDIRECT_PATH       : localProperties.getProperty(\"com.snap.kit.path\"),\n                    SNAP_REDIRECT_SCHEME     : localProperties.getProperty(\"com.snap.kit.scheme\"),\n                    FIREBASE_CUSTOM_TOKEN_URL: localProperties.getProperty(\"com.snap.kit.firebaseExtCustomTokenUrl\")\n\t\t]\n\t}\n\t//...\n}\n```\n- **OR** better way, setup different configurations for different `productFlavors`\n```groovy\nandroid {\n\t//...\n\tflavorDimensions \"environment\"\n\tproductFlavors {\n\t\tstaging {\n\t\t\tmanifestPlaceholders = [  \n                    \t\tSNAP_CLIENT_ID           : localProperties.getProperty(\"com.snap.kit.clientId\"),\n                    \t\tSNAP_REDIRECT_URL        : localProperties.getProperty(\"com.snap.kit.redirectUrl\"),\n                    \t\tSNAP_SCOPES_ARRAY        : \"@array/snap_connect_scopes\",\n                    \t\tSNAP_REDIRECT_HOST       : localProperties.getProperty(\"com.snap.kit.host\"),\n                    \t\tSNAP_REDIRECT_PATH       : localProperties.getProperty(\"com.snap.kit.path\"),\n\t\t\t\tSNAP_REDIRECT_SCHEME     : localProperties.getProperty(\"com.snap.kit.scheme\"),\n\t\t\t\tFIREBASE_CUSTOM_TOKEN_URL: localProperties.getProperty(\"com.snap.kit.firebaseExtCustomTokenUrl\")\n\t\t\t]\n\t\t}\n\t\tproduction {\n\t\t\tmanifestPlaceholders = [  \n                    \t\tSNAP_CLIENT_ID           : localProperties.getProperty(\"com.snap.kit.clientId\"),\n                    \t\tSNAP_REDIRECT_URL        : localProperties.getProperty(\"com.snap.kit.redirectUrl\"),\n                    \t\tSNAP_SCOPES_ARRAY        : \"@array/snap_connect_scopes\",\n                    \t\tSNAP_REDIRECT_HOST       : localProperties.getProperty(\"com.snap.kit.host\"),\n                    \t\tSNAP_REDIRECT_PATH       : localProperties.getProperty(\"com.snap.kit.path\"),\n\t\t\t\tSNAP_REDIRECT_SCHEME     : localProperties.getProperty(\"com.snap.kit.scheme\"),\n\t\t\t\tFIREBASE_CUSTOM_TOKEN_URL: localProperties.getProperty(\"com.snap.kit.firebaseExtCustomTokenUrl\")\n\t\t\t]\n\t\t}\n\t}\n\t//...\n}\n```\n**NOTE:** The same properties name should be used as defined in the `local.properties` file.\n\n## iOS\nAdd the following fields in your application’s `Info.plist` file:\n```xml\n\u003ckey\u003eSCSDKClientId\u003c/key\u003e\n\u003cstring\u003e$(SNAP_CLIENT_ID)\u003c/string\u003e\n\u003ckey\u003eSCSDKRedirectUrl\u003c/key\u003e\n\u003cstring\u003e$(SNAP_REDIRECT_URL)\u003c/string\u003e\n\u003ckey\u003eSCSDKScopes\u003c/key\u003e\n\u003carray\u003e\n    \u003cstring\u003ehttps://auth.snapchat.com/oauth2/api/user.display_name\u003c/string\u003e\n    \u003cstring\u003ehttps://auth.snapchat.com/oauth2/api/user.external_id\u003c/string\u003e\n    \u003cstring\u003ehttps://auth.snapchat.com/oauth2/api/user.bitmoji.avatar\u003c/string\u003e\n\u003c/array\u003e\n\u003ckey\u003eLSApplicationQueriesSchemes\u003c/key\u003e\n\u003carray\u003e\n    \u003cstring\u003esnapchat\u003c/string\u003e\n\u003c/array\u003e\n\u003ckey\u003eCFBundleURLTypes\u003c/key\u003e\n\u003carray\u003e\n\u003cdict\u003e\n    \u003ckey\u003eCFBundleTypeRole\u003c/key\u003e\n    \u003cstring\u003eEditor\u003c/string\u003e\n    \u003ckey\u003eCFBundleURLName\u003c/key\u003e\n    \u003cstring\u003e$(PRODUCT_BUNDLE_IDENTIFIER)\u003c/string\u003e\n    \u003ckey\u003eCFBundleURLSchemes\u003c/key\u003e\n    \u003carray\u003e\n        \u003cstring\u003e$(SNAP_REDIRECT_SCHEME)\u003c/string\u003e\n    \u003c/array\u003ex\n\u003c/dict\u003e\n\u003c/array\u003e\n```\nRead [Snapchat iOS Documentation](https://docs.snap.com/snap-kit/login-kit/Tutorials/ios#get-started) for more information.\n#### **Securing Your Client ID in Xcode**\nAdding a [Build Configuration](https://developer.apple.com/documentation/xcode/adding-a-build-configuration-file-to-your-project) file to your project for storing your client id and confidential keys. Let's add `SNAP_CLIENT_ID`, `SNAP_REDIRECT_URL` and `SNAP_REDIRECT_SCHEME` properties in configuration file.\n```properties\n/// Configuration settings file format documentation can be found at:\n/// https://help.apple.com/xcode/#/dev745c5c974\n\n/// Snapchat Settings\n/// your app’s client id\nSNAP_CLIENT_ID = YOUR_CLIENT_ID\n\n/// the url that will handle login completion\nSNAP_REDIRECT_URL = YOUR_REDIRECT_URL\n\n/// This should contain your redirect URL’s scheme\nSNAP_REDIRECT_SCHEME = YOUR_REDIRECT_SCHEME\n```\n- **OR** better way, setup different configurations file for different `productFlavors`\n\n**NOTE:** Now, whenever we push code to our repo, we can make sure that config file does not reach the server by adding it in .gitignore\n\n## Handle Deeplink\nIn `AppDelegate`, use the `SCSDKLoginClient` interface to receive the deeplink:\n```swift\nimport SCSDKLoginKit\n\nfunc application(\n  _ app: UIApplication,\n  open url: URL,\n  options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -\u003e Bool {\n  ...\n    if SCSDKLoginClient.application(app, open: url, options: options) {\n      return true\n    }\n  ...\n}\n```\n\n## Installation\nAfter the perform platform-specific configuration setups, add `snapchat_loginkit:` as a dependency in your pubspec.yaml file.\nThen run ```flutter pub get``` to install the package.\n\nNow in your Dart code, you can use:\n```dart\nimport 'package:snapchat_loginkit/snapchat_loginkit.dart';\n```\n\n## Initializing the SnapchatLoginkit\n\n```dart\nclass _MyAppState extends State\u003cMyApp\u003e{\n\n  /// Declaring a SnapchatLoginkit variable\n  late final SnapchatLoginkit _snapchatLoginkitPlugin;\n\n  @override\n  void initState() {\n    super.initState();\n\n    /// Initializing the _snapchatLoginkitPlugin variable\n    _snapchatLoginkitPlugin = SnapchatLoginkit(loginStateCallback: this);\n  }\n\n  @override\n  Widget build(BuildContext context) {\n    return MaterialApp(\n      home: Scaffold(\n        appBar: AppBar(\n          title: const Text('Snapchat loginkit example'),\n        ),\n        body: Container(),\n      ),\n    );\n  }\n}\n```\n## Login with snapchat\n\nTo login, use `login()`. \n\nLoginStateCallback Provides methods to handle Snapchat login callbacks.\n\nUse [LoginStateCallback] methods to listen to login events such as success, failure, start, and logout.\n\n```dart\nclass _MyAppState extends State\u003cMyApp\u003e implements LoginStateCallback {\n\n  /// Declaring a SnapchatLoginkit variable\n  late final SnapchatLoginkit _snapchatLoginkitPlugin;\n\n  @override\n  void initState() {\n    super.initState();\n\n    /// Initializing the _snapchatLoginkitPlugin variable\n    _snapchatLoginkitPlugin = SnapchatLoginkit(loginStateCallback: this);\n  }\n\n  @override\n  Widget build(BuildContext context) {\n    return MaterialApp(\n      home: Scaffold(\n        appBar: AppBar(\n          title: const Text('Snapchat loginkit example'),\n        ),\n        body: Center(child: ElevatedButton(\n                        onPressed: () {\n                          /// call login event\n                          /// LoginStateCallback Provides methods to handle Snapchat login callbacks.\n                          _snapchatLoginkitPlugin.login();\n                        },\n                        child: const Text('Login with Snapchat'),\n                      ),\n                   ),\n      ),\n    );\n  }\n\n  /// Callback method invoked when the login process fails.\n  @override\n  void onFailure(String message) {}\n\n  /// Callback method invoked when the user logs out.\n  @override\n  void onLogout() {}\n\n  /// Callback method invoked when the login process starts.\n  @override\n  void onStart() {}\n\n  /// Callback method invoked when the login process is successful.\n  @override\n  void onSuccess(String accessToken) async {}\n}\n```\n\n## Subscribe / Unsubscribe to Login State Updates\nTo subscribe to updates about the success of the login process, use `addLoginStateCallback()`. \nTo unsubscribe from login updates, use `removeLoginStateCallback()`.\n\n```dart\nclass _MyAppState extends State\u003cMyApp\u003e implements LoginStateCallback {\n\n  /// Declaring a SnapchatLoginkit variable\n  late final SnapchatLoginkit _snapchatLoginkitPlugin;\n\n  @override\n  void initState() {\n    super.initState();\n\n    /// Initializing the _snapchatLoginkitPlugin variable\n    _snapchatLoginkitPlugin = SnapchatLoginkit(loginStateCallback: this);\n\n    /// Subscribe for login updates\n    _snapchatLoginkitPlugin.addLoginStateCallback();\n  }\n\n  @override\n  void dispose() {\n    /// Unsubscribe from login updates\n     _snapchatLoginkitPlugin.removeLoginStateCallback();\n    super.dispose();\n  }\n\n  @override\n  Widget build(BuildContext context) {\n    return MaterialApp(\n      home: Scaffold(\n        appBar: AppBar(\n          title: const Text('Snapchat loginkit example'),\n        ),\n        body: Container(),\n      ),\n    );\n  }\n\n  /// Callback method invoked when the login process fails.\n  @override\n  void onFailure(String message) {}\n\n  /// Callback method invoked when the user logs out.\n  @override\n  void onLogout() {}\n\n  /// Callback method invoked when the login process starts.\n  @override\n  void onStart() {}\n\n  /// Callback method invoked when the login process is successful.\n  @override\n  void onSuccess(String accessToken) async {}\n}\n```\n\n## Send Requests to Get User Data\n\nOnce a user logs into your app with Snapchat, you can make requests for their `displayName`, `AvatarUrl`, `AvatarId`, `externalId`, `tokenId` and `profileLink`.\n\nConstruct the user data query\n```dart\nUserDataQuery query = UserDataQueryBuilder()\n/// optional: for 'displayName' resource\n.withDisplayName()\n/// optional: for ‘bitmoji’ resource\n.withBitmojiAvatarId()\n.withBitmojiAvatarUrl()\n/// optional: for 'externalID' resource\n.withExternalId()\n/// optional: for Snap OIDC (OpenID Connect) token\n/// Snap OIDC (OpenID Connect) provides a generic authentication and identity solution\n/// that allows otherwise different systems to interoperate and share authentication state\n/// and user profile information.\n/// Typically, this allows 3rd party backend services to accept and authenticate requests\n/// from Snap clients.\n.withIdToken()\n/// optional: for 'profileLink' resource\n.withProfileLink()\n.build();\n```\n\nCall the fetch API\n```dart\nUserResponse userResponse = await _snapchatLoginkitPlugin.fetchUserData(query);\n/// handle the response code\ndebugPrint(\"User Code: ${userResponse.code}\");\n\n/// handle the response message\ndebugPrint(\"User Message: ${userResponse.message}\");\n\n/// handle the response user\ndebugPrint(\"User: ${userResponse.user}\");\n\n/// get user display name\nfinal displayName = userResponse.user.displayName;\n\n/// get user avatar url\nfinal avatarUrl = userResponse.user.avatarUrl;\n\n/// get user avatar id\nfinal avatarId = userResponse.user.avatarId;\n\n/// get user external id\nfinal externalId = userResponse.user.externalId;\n\n/// get user token id\nfinal tokenId = userResponse.user.tokenId;\n\n/// get user profile link\nfinal profileLink = userResponse.user.profileLink;\n```\n\n## Query Login State\n\nTo check whether a user is currently logged in, use `isUserLoggedIn()`\n\n```dart\n /// Query user’s logged-in state\n bool isUserLoggedIn = await _snapchatLoginkitPlugin.isUserLoggedIn();\n```\n\n## Fetch Access Token\nRetrieve the access token after a successful login, use `fetchAccessToken()`\n```dart\n    final response = await _snapchatLoginkitPlugin.fetchAccessToken();\n\n    /// handle response code\n    debugPrint(\"Token Code: ${response.code}\");\n\n    /// handle response meesage\n    debugPrint(\"Token Message: ${response.message}\");\n\n    /// get access token\n    debugPrint(\"Token Token: ${response.token}\");\n```\n\n## Access To Scope \nCheck if the user has granted access to a specific scope (permission) in their Snapchat account. use `hasAccessToScope('scope')`\n\n```dart\n /// Login Kit offers the following scopes: \n /// https://auth.snapchat.com/oauth2/api/user.bitmoji.avatar\n /// https://auth.snapchat.com/oauth2/api/user.display_name\n final bool hasAccess = await _snapchatLoginkitPlugin.hasAccessToScope('https://auth.snapchat.com/oauth2/api/user.display_name');\n```\n\n## Authenticate With Firebase \nUsers to authenticate with Firebase using their Snapchat accounts. Define the `com.snap.kit.firebaseExtCustomTokenUrl=firebaseExtCustomTokenUrl` value in `local.properties` file under  **:android** module.\nBefore call this method `loginWithFirebase()` you should need to provide Firebase extension token url. for more help, how to generate firebase extension token url visit \n[Firebase Extension Token Url Android](https://docs.snap.com/snap-kit/login-kit/Tutorials/firebase/android#get-started) , [Firebase Extension Token Url iOS](https://docs.snap.com/snap-kit/login-kit/Tutorials/firebase/ios)\n\n## Unlink\nA user can choose to end the current OAuth2 Snapchat session and stop sharing their Display Name and Bitmoji avatar with your app. \nThe `logout()` method can be used to clear the access.\n\n```dart\n /// Clear the access and refresh token locally\n _snapchatLoginkitPlugin.logout();\n```\n\n## Bugs and feature requests\n\nHave a bug or a feature request? Please first search for existing and closed issues. If your problem\nor idea is not addressed\nyet, [please open a new issue](https://github.com/DevCrew-io/snapchat_loginkit/issues/new).\n\n## Author\n\n[DevCrew I/O](https://devcrew.io/)\n\u003ch3 align=“left”\u003eConnect with Us:\u003c/h3\u003e\n\u003cp align=\"left\"\u003e\n\u003ca href=\"https://devcrew.io\" target=\"blank\"\u003e\u003cimg align=\"center\" src=\"https://devcrew.io/wp-content/uploads/2022/09/logo.svg\" alt=\"devcrew.io\" height=\"35\" width=\"35\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://www.linkedin.com/company/devcrew-io/mycompany/\" target=\"blank\"\u003e\u003cimg align=\"center\" src=\"https://raw.githubusercontent.com/rahuldkjain/github-profile-readme-generator/master/src/images/icons/Social/linked-in-alt.svg\" alt=\"mycompany\" height=\"30\" width=\"40\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/DevCrew-io\" target=\"blank\"\u003e\u003cimg align=\"center\" src=\"https://cdn-icons-png.flaticon.com/512/733/733553.png\" alt=\"DevCrew-io\" height=\"32\" width=\"32\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## Contributing\n\nContributions, issues, and feature requests are welcome!\n\n## Show your Support\n\nGive a star if this project helped you.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevcrew-io%2Fsnapchat_loginkit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevcrew-io%2Fsnapchat_loginkit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevcrew-io%2Fsnapchat_loginkit/lists"}