Helps you to automatically authenticate and store tokens and refresh them, also make api requests using them.
This project is under development. View the GitHub code and contribute 👉 https://github.com/Otajonov/drf_client
- ✅ Automatically store tokens using Flutter Secure Storage
- ✅ Automatically refresh tokens
- ✅ Supports Oauth2 by Django Oauth Toolkit
- ✅ Easy REST API call with auth credentials
- ✅ More coming soon ...
To start using package, add it to your dependencies by running this:
flutter pub add drf_clientor add this line into your pubspec.yaml under dependencies:
dependencies: flutter: sdk: flutter # your other dependencies ... drf_client: <latest_version>Then import the package in desired files:
import 'package:drf_client/drf_client.dart'; Enjoy coding!
Firstly, initialize the config:
void main() { // existing code DrfClient client = DrfClient(); client.addConfig('your-app', DrfConfig( authType: AuthType.drfBuiltInAuth, baseUrl: 'https://your-app.com/api', tokenUrl: 'https://your-app.com/api/token', refreshTokenUrl: 'https://your-app.com/api/token/refresh', usernameField: 'username', // default username, change this if you are using custom user model in django passwordField: 'password', // def password, change this if you changed password field in you user model refreshField: 'refresh_token', // change this to comply with your token refresh logic if JWT used // Set this if u are using Authorization Code over Django-oauth-toolkit // oauthConfig: OauthConfig( // clientId: "", // clientSecret: "", // authorizationEndpointUrl: "https://ilmchat.com/auth/authorize/", // redirectScheme: 'you-app-shceme' // // ) )); } You can also set multiple config so that you can make request and authenticate multiple django servers at the same code by giving specific app name in config.
via drfBuiltInAuth:
DrfClient client = DrfClient(); client.loginDrfBuiltIn() DrfClient client = DrfClient(); client.get() // post() put() patch() delete() It will use stored user token in requests if logged in. You can remove Token from auth header by includeToken: false