1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // Use the <code>chrome.identity</code> API to get OAuth2 access tokens. 6 namespace identity { 7 8 dictionary TokenDetails { 9 // Fetching a token may require the user to sign-in to Chrome, or 10 // approve the application's requested scopes. If the interactive 11 // flag is <code>true</code>, <code>getAuthToken</code> will 12 // prompt the user as necessary. When the flag is 13 // <code>false</code> or omitted, <code>getAuthToken</code> will 14 // return failure any time a prompt would be required. 15 boolean? interactive; 16 }; 17 18 dictionary InvalidTokenDetails { 19 // The specific token that should be removed from the cache. 20 DOMString token; 21 }; 22 23 dictionary WebAuthFlowDetails { 24 // The URL that initiates the auth flow. 25 DOMString url; 26 27 // Whether to launch auth flow in interactive mode. 28 // 29 // Since some auth flows may immediately redirect to a result URL, 30 // <code>launchWebAuthFlow</code> hides its web view until the 31 // first navigation either redirects to the final URL, or finishes 32 // loading a page meant to be displayed. 33 // 34 // If the interactive flag is <code>true</code>, the window will 35 // be displayed when a page load completes. If the flag is 36 // <code>false</code> or omitted, <code>launchWebAuthFlow</code> 37 // will return with an error if the initial navigation does not 38 // complete the flow. 39 boolean? interactive; 40 }; 41 42 dictionary AccountInfo { 43 // A unique identifier for the account. This ID will not change 44 // for the lifetime of the account. 45 DOMString id; 46 }; 47 48 callback GetAuthTokenCallback = void (optional DOMString token); 49 callback InvalidateAuthTokenCallback = void (); 50 callback LaunchWebAuthFlowCallback = void (optional DOMString responseUrl); 51 52 interface Functions { 53 // Gets an OAuth2 access token using the client ID and scopes 54 // specified in the <a 55 // href="app_identity.html#update_manifest"><code>oauth2</code> 56 // section of manifest.json</a>. 57 // 58 // The Identity API caches access tokens in memory, so it's ok to 59 // call <code>getAuthToken</code> any time a token is 60 // required. The token cache automatically handles expiration. 61 // 62 // |details| : Token options. 63 // |callback| : Called with an OAuth2 access token as specified by the 64 // manifest, or undefined if there was an error. 65 static void getAuthToken(optional TokenDetails details, 66 GetAuthTokenCallback callback); 67 68 // Removes an OAuth2 access token from the Identity API's token cache. 69 // 70 // If an access token is discovered to be invalid, it should be 71 // passed to removeCachedAuthToken to remove it from the 72 // cache. The app may then retrieve a fresh token with 73 // <code>getAuthToken</code>. 74 // 75 // |details| : Token information. 76 // |callback| : Called when the token has been removed from the cache. 77 static void removeCachedAuthToken( 78 InvalidTokenDetails details, InvalidateAuthTokenCallback callback); 79 80 // Starts an auth flow at the specified URL. 81 // 82 // This method enables auth flows with non-Google identity 83 // providers by launching a web view and navigating it to the 84 // first URL in the provider's auth flow. When the provider 85 // redirects to a URL matching the pattern 86 // <code>https://<app-id>.chromiumapp.org/*</code>, the 87 // window will close, and the final redirect URL will be passed to 88 // the <var>callback</var> function. 89 // 90 // |details| : WebAuth flow options. 91 // |callback| : Called with the URL redirected back to your application. 92 static void launchWebAuthFlow(WebAuthFlowDetails details, 93 LaunchWebAuthFlowCallback callback); 94 95 // Generates a redirect URL to be used in |launchWebAuthFlow|. 96 // 97 // The generated URLs match the pattern 98 // <code>https://<app-id>.chromiumapp.org/*</code>. 99 // 100 // |path| : The path appended to the end of the generated URL. 101 [nocompile] static DOMString getRedirectURL(optional DOMString path); 102 }; 103 104 interface Events { 105 // Fired when signin state changes for an account on the user's profile. 106 static void onSignInChanged(AccountInfo account, boolean signedIn); 107 }; 108 }; 109