{"id":28384168,"url":"https://github.com/plaid/plaid-link-android","last_synced_at":"2026-04-24T20:01:15.737Z","repository":{"id":38289081,"uuid":"201029905","full_name":"plaid/plaid-link-android","owner":"plaid","description":"Plaid Link Android SDK","archived":false,"fork":false,"pushed_at":"2025-10-29T16:29:58.000Z","size":6759,"stargazers_count":125,"open_issues_count":18,"forks_count":64,"subscribers_count":57,"default_branch":"master","last_synced_at":"2026-01-31T16:27:22.075Z","etag":null,"topics":["java","kotlin","plaid","plaid-android","plaid-link"],"latest_commit_sha":null,"homepage":"https://plaid.com/docs/link/android","language":"Kotlin","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/plaid.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-08-07T10:41:58.000Z","updated_at":"2026-01-14T20:56:23.000Z","dependencies_parsed_at":"2024-03-20T19:58:00.994Z","dependency_job_id":"9f959007-a639-4696-808b-0a11188e3f15","html_url":"https://github.com/plaid/plaid-link-android","commit_stats":null,"previous_names":[],"tags_count":85,"template":false,"template_full_name":null,"purl":"pkg:github/plaid/plaid-link-android","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plaid%2Fplaid-link-android","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plaid%2Fplaid-link-android/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plaid%2Fplaid-link-android/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plaid%2Fplaid-link-android/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/plaid","download_url":"https://codeload.github.com/plaid/plaid-link-android/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plaid%2Fplaid-link-android/sbom","scorecard":{"id":736737,"data":{"date":"2025-08-11","repo":{"name":"github.com/plaid/plaid-link-android","commit":"69a85838de42cebbafe8791ae0a8573c2da7323a"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.1,"checks":[{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Code-Review","score":10,"reason":"all changesets reviewed","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":5,"reason":"7 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 5","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Binary-Artifacts","score":9,"reason":"binaries present in source code","details":["Warn: binary detected: gradle/wrapper/gradle-wrapper.jar:1"],"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: npmCommand not pinned by hash: start_server.sh:7","Info:   0 out of   1 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T16:06:42.185Z","repository_id":38289081,"created_at":"2025-08-22T16:06:42.185Z","updated_at":"2025-08-22T16:06:42.185Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32238748,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-24T13:21:15.438Z","status":"ssl_error","status_checked_at":"2026-04-24T13:21:15.005Z","response_time":64,"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":["java","kotlin","plaid","plaid-android","plaid-link"],"created_at":"2025-05-30T07:38:55.001Z","updated_at":"2026-04-24T20:01:15.724Z","avatar_url":"https://github.com/plaid.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Plaid Link Sample Android App [![version][link-sdk-version]][link-sdk-url]\nThis sample app will show you how Link Android SDK can integrate with your own app in both Kotlin and Java. Check out [the benefits](./docs/sdk-vs-webview-comparison.md) of using the SDK. \n\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/link_demo.gif\" loading=\"lazy\" alt=\"Link demo gif\" height=\"512\" /\u003e\n\u003c/p\u003e\n\n\u003e Detailed instructions on how to integrate with Plaid Link for Android in your app can be found in our [main documentation][link-android-docs].\n\n\n# Getting Started\nTo run the sample app, you'll need a Plaid account. You can create one on [our website][plaid-signup].\n\n## 1. Register your app id\n1. Log into your [Plaid Dashboard][plaid-dashboard-api] at the API page\n2. Next to \"Allowed Android package names\" click \"Configure\" then \"Add New Android Package Name\"\n3. Enter the sample app package name: `com.plaid.linksample`\n4. Click \"Save Changes\", you may be prompted to re-enter your password\n\n## 2a. Generate a link_token and add it to the sample app\n1. Clone the sample repository\n2. Curl [/link/token/create](https://plaid.com/docs/#create-link-token) to create a new link_token\n3. Copy and paste the link_token into the [kotlin][get-link-token-kotlin] or [java][get-link-token-java] LinkTokenRequester's `getToken()` function.\n\nOR\n\n## 2b. Run the token server (imitation [backend server][link-quickstart])\n1. [Install npm][npm-installation]\n2. Copy your client id and secret from your [Plaid Dashboard][plaid-dashboard-keys] keys page\n3. Run `./start_server.sh ${CLIENT_ID} ${SECRET}` but replace `client_id` and `secret` with values from your dashboard account.\n4. Server is now running on `localhost:8000`\n\n## 3. Run the sample application\n1. 🚀\n\n# Features\n- How to integrate the Plaid Link sdk: `build.gradle` files, `link_token` configuration, `Plaid` initialization\n- Kotlin and Java sample Activity that show how to start Link and receive a result\n- Use of `OpenPlaidLink` `ActivityResultContract` for easy handling of Link results\n- _Optional_ use of `LinkEventListener` to get events from Link\n\nHave a look at our [main documentation][link-android-docs] for all Plaid Link SDK features.\n\n# Releases\nOur [change log][changelog] has release history.\t\n\nWe create release candidates (e.g. 3.2.0-rc1) as beta previews for developers. These are helpful for customers who either are 1. waiting for a specific fix or 2. extremely eager for specific features. They do not hold the same quality guarantee as our official releases, and should NOT be used in production. The official releases come ~2 weeks after the first release candidate (rc1).\n\nThe latest version of Plaid Link is [![version][link-sdk-version]][link-sdk-url].\n\n```kotlin\nimplementation(\"com.plaid.link:sdk-core:\u003cinsert latest version\u003e\")\n```\n\nR8 and ProGuard rules are already bundled in our AAR and will be used automatically.\n\n## Upgrading\n\nPlaid releases updates to the SDK approximately every few months. For the best user experience, we recommend using the latest version of the SDK.\n\nMajor SDK versions are released annually. SDK versions are supported for two years; with each major SDK release, Plaid will stop officially supporting any previous SDK versions that are more than two years old. \n\nWhile these older versions are expected to continue to work without disruption, Plaid will not provide assistance with unsupported SDK versions. \n\n# Migration Guide\n\n### Changes from SDK 4.x to 5.0\n\n#### 1. Link Open changes\n\nPlaid SDK 4.2 introduced `FastOpenPlaidLink` with the `PlaidHandler` to warm up a Link session and `destroy()` to end a warmed up session. `OpenPlaidLink` has been deprecated, as `FastOpenPlaidLink` is now the recommended method to open Link, as it results in lower user-facing latency. It is also required if using Plaid Layer. This is not a breaking change, as `OpenPlaidLink` has not been removed from the SDK, but all customers are encouraged to migrate to `FastOpenPlaidLink`. For example integration, see the sample app in this SDK or the [Opening Link documentation for Plaid Link Android](https://plaid.com/docs/link/android/#opening-link).\n\n#### 2. Upgrade to Kotlin 1.9.25\nThe Link Android SDK version of Kotlin has been upgraded to 1.9.25 and may need to be updated in your project.\n\n### Changes from SDK 3.x to 4.0\n\n#### 1. Authentication Method Changes\n**BREAKING**: Removed deprecated support for public key authentication.\n\nIf your integration is using public key authentication, it's essential to migrate to Link Tokens. This change does not affect you if you've already made this transition. For detailed instructions, refer to Plaid's [migration guide](https://plaid.com/docs/link-token-migration-guide).\n\n#### 2. Open Options Configuration\n**BREAKING**: Removed `extraParams(extraParams: Map\u003cString, String\u003e)` setter method from  `LinkTokenConfiguration#Builder`.\n\nIf your integration relies on `extraParams`, you must now configure these parameters while creating your [Link Tokens](https://plaid.com/docs/api/tokens/). Update your implementation accordingly.\n\n#### 3. Upgrade to Kotlin 1.8\nThe Link Android SDK version of Kotlin has been upgraded to 1.8 and may need to be updated in your project.\n\n# License\n```\nMIT License\n\nCopyright (c) 2020 Plaid\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n```\n\n\n[link-sdk-version]: https://img.shields.io/maven-central/v/com.plaid.link/sdk-core\n[link-sdk-url]: https://search.maven.org/artifact/com.plaid.link/sdk-core\n[link-android-docs]: https://plaid.com/docs/link/android/\n[plaid-signup]: https://dashboard.plaid.com/signup?email=\n[plaid-dashboard-api]: https://dashboard.plaid.com/team/api\n[plaid-dashboard-keys]: https://dashboard.plaid.com/team/keys\n[changelog]: https://github.com/plaid/plaid-link-android/releases\n[get-link-token-kotlin]: app/src/main/java/com/plaid/linksample/MainActivity.kt\n[get-link-token-java]: app/src/main/java/com/plaid/linksample/MainActivityJava.java\n[npm-installation]: https://docs.npmjs.com/downloading-and-installing-node-js-and-npm\n[link-quickstart]: https://plaid.com/docs/quickstart/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplaid%2Fplaid-link-android","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fplaid%2Fplaid-link-android","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplaid%2Fplaid-link-android/lists"}