TeslaAuth
C# / .NET core library for authenticating to Tesla's Owner API
Install / Use
/learn @tomhollander/TeslaAuthREADME
TeslaAuth library for C# / .NET
Helper library to authenticate to Tesla's API, enabling you to build apps that interact with Tesla's cars and energy products.
Works with the new Fleet API. Note that the Owner API is now deprecated.
This code was originally based on Christian P's work in the TeslaLogger tool.
Thanks also to Tim Dorr for his work in documenting the new API, and Ramon Smits for his contributions to this library.
Install
The package is available via NuGet with the package name TeslaAuth.
Install-Package TeslaAuth
Supported platforms
The library is compiled using .NET Standard 2.0, and can be used by any flavour of .NET that supports this, including .NET, .NET Core, .NET Framework, Mono, UWP and Xamarin.
Sample Apps
This repo includes three samples:
- A WPF sample that demonstrates a native client authentication with an embedded iframe (only runs on Windows)
- A console app that launches the system browser to complete authentication - low tech but simple (should work across platforms)
- An ASP.NET Core app that demonstates web authentication (should work across platforms)
The WPF sample can be used with the Fleet API; you need to supply your own Fleet API keys. You can use any Redirect URL (doesn't even need to be real, but it must match what you configured in the Tesla console)
The console and web sample only works with the Fleet API, and you need to supply your own Fleet API keys. You must use a Redirect Redirect URL that matches the one configured for your app. For the Console sample it doesn't matter what this is, but for the web sample it must the sample website's host, port and path.
Usage
To authenticate users for the Tesla API, you need to show the Tesla sign in UI in a browser (system or embedded). Once the user has authenticated, the tokens are posted back to your page or app.
The steps to use this library are:
- Initialise a
TeslaAuthHelperinstance - Call
authHelper.GetLoginUrlForBrowser()to generate the login URL - Show the returned URL in the system browser or your app's integrated browser
- Monitor the browser until you see a request for a URL containing the your redirect URL, or if you're building a website, implement the logic directly on the redirect URL
- Grab the entire URL (it contains a query string) and pass it to
authHelper.GetTokenAfterLoginAsync(...) - This will return a
Tokensobject containing an Access and Refresh token - When the token expires, call
authHelper.RefreshTokenAsync(...)to get a new one without needing a complete login flow.
Fleet API Authentication
The Fleet API is Tesla's new, officially supported API for third party developers. In order to use it, you need to first register for an account and then register an app to get a Client ID and other details. You must also complete additional onboarding steps as described at developer.tesla.com.
To use the Fleet API, you can initialise a TeslaAuth instance passing the region, clientId, clientSecret, redirectUri and
scope parameters.
The values you use must match the ones configured in the Tesla developer portal.
Calling APIs
Once you have obtained a token from TeslaAuth, you can pass it to the Fleet API as a Bearer token in the Authorization
header. This library does not assist with calling the Tesla APIs; it's only for authentication.
Contributions
Contributions to this library are welcome. If you want to show your appreciation you can also support me on Ko-Fi.
Related Skills
node-connect
349.7kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
109.7kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
349.7kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
349.7kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
