<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.nina.chat/index.php?action=history&amp;feed=atom&amp;title=Protocols%2FWebAPI%2FAuth%2FWebApp%2FgetToken</id>
	<title>Protocols/WebAPI/Auth/WebApp/getToken - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.nina.chat/index.php?action=history&amp;feed=atom&amp;title=Protocols%2FWebAPI%2FAuth%2FWebApp%2FgetToken"/>
	<link rel="alternate" type="text/html" href="https://wiki.nina.chat/index.php?title=Protocols/WebAPI/Auth/WebApp/getToken&amp;action=history"/>
	<updated>2026-06-26T08:39:36Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://wiki.nina.chat/index.php?title=Protocols/WebAPI/Auth/WebApp/getToken&amp;diff=8776&amp;oldid=prev</id>
		<title>Animadoria at 16:02, 30 April 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.nina.chat/index.php?title=Protocols/WebAPI/Auth/WebApp/getToken&amp;diff=8776&amp;oldid=prev"/>
		<updated>2025-04-30T16:02:07Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 16:02, 30 April 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l36&quot;&gt;Line 36:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 36:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The following data elements would be returned in the response&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The following data elements would be returned in the response&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;pre&amp;gt;        &lt;/del&gt;* token&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* token&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;              o &lt;/del&gt;expiresIn -- Expiry time in secs&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;** &lt;/ins&gt;expiresIn -- Expiry time in secs&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;              o &lt;/del&gt;a - Authentication Token that can be used to invoke other services&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;** &lt;/ins&gt;a - Authentication Token that can be used to invoke other services&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        &lt;/del&gt;* redirectURL -- Redirect URL where the user should be redirected to.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/pre&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* redirectURL -- Redirect URL where the user should be redirected to.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;If the requested response format is xml or json and 'succUrl' parameter is provided in the request, the response data will be url encoded and appended to the 'succUrl' as a Query Parameter &amp;amp;quot;res&amp;amp;quot;. ex. ${succUrl}?res=&amp;amp;lt;response-data&amp;amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;If the requested response format is xml or json and 'succUrl' parameter is provided in the request, the response data will be url encoded and appended to the 'succUrl' as a Query Parameter &amp;amp;quot;res&amp;amp;quot;. ex. ${succUrl}?res=&amp;amp;lt;response-data&amp;amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki-wiki_:diff:1.41:old-8772:rev-8776:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Animadoria</name></author>
	</entry>
	<entry>
		<id>https://wiki.nina.chat/index.php?title=Protocols/WebAPI/Auth/WebApp/getToken&amp;diff=8772&amp;oldid=prev</id>
		<title>Animadoria: Created page with &quot;{{Protocols/WebAPI}}  This page is about the getToken method for WebAPI Web App authentication.  Returns an NINA Authentication Token for an already authenticated user. The Authentication Token can be used to invoke Identity based NINA Services on behalf of the user or can be used to check user's Authentication status. This method can be invoked either as a redirect or as a JSON/JSONP call from the browser but cannot be invoked from Serve...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.nina.chat/index.php?title=Protocols/WebAPI/Auth/WebApp/getToken&amp;diff=8772&amp;oldid=prev"/>
		<updated>2025-04-30T15:41:55Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;{{Protocols/WebAPI}}  This page is about the getToken method for &lt;a href=&quot;/wiki/Protocols/WebAPI/Auth/WebApp&quot; title=&quot;Protocols/WebAPI/Auth/WebApp&quot;&gt;WebAPI Web App&lt;/a&gt; authentication.  Returns an NINA Authentication Token for an already authenticated user. The Authentication Token can be used to invoke Identity based NINA Services on behalf of the user or can be used to check user&amp;#039;s Authentication status. This method can be invoked either as a redirect or as a JSON/JSONP call from the browser but cannot be invoked from Serve...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Protocols/WebAPI}}&lt;br /&gt;
&lt;br /&gt;
This page is about the getToken method for [[Protocols/WebAPI/Auth/WebApp|WebAPI Web App]] authentication.&lt;br /&gt;
&lt;br /&gt;
Returns an NINA Authentication Token for an already authenticated user. The Authentication Token can be used to invoke Identity based NINA Services on behalf of the user or can be used to check user's Authentication status. This method can be invoked either as a redirect or as a JSON/JSONP call from the browser but cannot be invoked from Server Side as it depends on Secure Authentication Cookies set in the user's browser.&lt;br /&gt;
&lt;br /&gt;
If the user is not already authenticated, a response with statusCode '401' (Authentication Required) along with a login redirectURL is returned.&lt;br /&gt;
&lt;br /&gt;
* URL&lt;br /&gt;
** http(s)://api.nina.chat/auth/getToken&lt;br /&gt;
* HTTP Method&lt;br /&gt;
** GET or POST&lt;br /&gt;
* Arguments&lt;br /&gt;
** devId (required)&lt;br /&gt;
*** your developer Id required to access NINA APIs&lt;br /&gt;
** f (required)&lt;br /&gt;
*** the required format of the response (json or xml or qs)&lt;br /&gt;
** succUrl (optional)&lt;br /&gt;
*** the destination url where the site wants the user to be redirected to upon success or failure. If no succUrl is provided, it would be assumed that the calling site is using JSON/JSONPcall and the response is simply returned as a JSON object.&lt;br /&gt;
*** NOTE: The succUrl is used as the &amp;amp;quot;Trust Url&amp;amp;quot; that's displayed to the users and also used to limit the scope of the Authentication Token.&lt;br /&gt;
*** If no succUrl is used, the REFERER header will be used as the &amp;amp;quot;Trust Url&amp;amp;quot;.&lt;br /&gt;
*** If neither succUrl nor REFERER header are available, then the request would be blocked.&lt;br /&gt;
** s (optional)&lt;br /&gt;
*** the loginID of the source user (if known)&lt;br /&gt;
** language (optional)&lt;br /&gt;
*** the required language and locale of the error/status messages. This is always in &amp;amp;quot;&amp;amp;lt;lang&amp;amp;gt;-&amp;amp;lt;locale&amp;amp;gt;&amp;amp;quot; format. The lang is the 2 letter language code for I18N (default: en) and the locale is the 2 letter Locale code for I18N (default: us). If not passed in, the language will be extracted from HTTP header (Accept-Language) and if that is not available will default to &amp;amp;quot;en-us&amp;amp;quot;. Check below for our current supported language list.&lt;br /&gt;
** tokenType (optional)&lt;br /&gt;
*** &amp;amp;quot;shortterm&amp;amp;quot; (session based token - max life 24 hrs - default) or &amp;amp;quot;longterm&amp;amp;quot; (valid for 1 year) or any non-negative long value representing the required Token validity in seconds&lt;br /&gt;
** c (optional)&lt;br /&gt;
*** the callback method to use when using jsonp convention (argument f = json)&lt;br /&gt;
** r (optional)&lt;br /&gt;
*** an URL safe string to be used as requestId - when passed it is returned back in the response&lt;br /&gt;
&lt;br /&gt;
== Response Format ==&lt;br /&gt;
&lt;br /&gt;
The following data elements would be returned in the response&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;        * token&lt;br /&gt;
              o expiresIn -- Expiry time in secs&lt;br /&gt;
              o a - Authentication Token that can be used to invoke other services&lt;br /&gt;
        * redirectURL -- Redirect URL where the user should be redirected to.&amp;lt;/pre&amp;gt;&lt;br /&gt;
If the requested response format is xml or json and 'succUrl' parameter is provided in the request, the response data will be url encoded and appended to the 'succUrl' as a Query Parameter &amp;amp;quot;res&amp;amp;quot;. ex. ${succUrl}?res=&amp;amp;lt;response-data&amp;amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== The XML standard wrapper ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;       &amp;amp;lt;response&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
            &amp;amp;lt;statusCode /&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;statusText /&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;statusDetailCode /&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;requestId /&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;data&amp;amp;gt;&lt;br /&gt;
                 ....&lt;br /&gt;
            &amp;amp;lt;/data&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
       &amp;amp;lt;/response&amp;amp;gt; &amp;lt;/pre&amp;gt;&lt;br /&gt;
=== The JSON standard wrapper ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;   {&amp;amp;quot;response&amp;amp;quot;:{&lt;br /&gt;
        &amp;amp;quot;statusCode&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;&lt;br /&gt;
        &amp;amp;quot;statusText&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&lt;br /&gt;
        &amp;amp;quot;statusDetailCode&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
        &amp;amp;quot;requestId&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;&lt;br /&gt;
        &amp;amp;quot;data&amp;amp;quot;:{&lt;br /&gt;
              ....&lt;br /&gt;
        } &lt;br /&gt;
   }}&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Query String ===&lt;br /&gt;
&lt;br /&gt;
The following parameters will be returned back as URL query parameters to your succUrl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;         statusCode&lt;br /&gt;
         statusText&lt;br /&gt;
         statusDetailCode&lt;br /&gt;
         requestId&lt;br /&gt;
         token_expiresIn&lt;br /&gt;
         token_a&lt;br /&gt;
         redirectURL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Error Codes ==&lt;br /&gt;
** 200 - Success (Ok)&lt;br /&gt;
** 330 - More authentication required&lt;br /&gt;
** 400 - Invalid request&lt;br /&gt;
** 401 - Unauthorized (authentication required)&lt;br /&gt;
** 405 - Method not allowed&lt;br /&gt;
** 408 - Request timeout&lt;br /&gt;
** 430 - Source rate limit reached&lt;br /&gt;
** 440 - Invalid Key&lt;br /&gt;
** 441 - Key usage limit reached&lt;br /&gt;
** 442 - Key invalid IP&lt;br /&gt;
** 443 - Key used from unauthorized site&lt;br /&gt;
** 444 - token used from unauthorized site (Referer doesn't match the value in token)&lt;br /&gt;
** 460 - Missing required parameter&lt;br /&gt;
** 462 - Parameter error&lt;br /&gt;
** 500 - Generic Server Error&lt;br /&gt;
&lt;br /&gt;
== Sample Response ==&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;    &amp;amp;lt;response xmlns=&amp;amp;quot;https://api.login.aol.com&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;statusCode&amp;amp;gt;200&amp;amp;lt;/statusCode&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;amp;lt;statusText&amp;amp;gt;OK&amp;amp;lt;/statusText&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;data&amp;amp;gt;&lt;br /&gt;
           &amp;amp;lt;token&amp;amp;gt;&lt;br /&gt;
             &amp;amp;lt;expiresIn&amp;amp;gt;86400&amp;amp;lt;/expiresIn&amp;amp;gt;&lt;br /&gt;
             &amp;amp;lt;a&amp;amp;gt;%2FwEAAAAAZ%2F......&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
           &amp;amp;lt;/token&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/data&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/response&amp;amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== JSON ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;    {&amp;amp;quot;response&amp;amp;quot;:{&lt;br /&gt;
        &amp;amp;quot;statusCode&amp;amp;quot;:200,&lt;br /&gt;
        &amp;amp;quot;statusText&amp;amp;quot;:&amp;amp;quot;OK&amp;amp;quot;,&lt;br /&gt;
        &amp;amp;quot;data&amp;amp;quot;:{&lt;br /&gt;
           &amp;amp;quot;token&amp;amp;quot;:{&lt;br /&gt;
              &amp;amp;quot;expiresIn&amp;amp;quot;:86400,&lt;br /&gt;
              &amp;amp;quot;a&amp;amp;quot;:&amp;amp;quot;%2FwEAAAAAZ%2F......&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }}&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Query String ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;    statusCode=200&amp;amp;amp;statusText=OK&amp;amp;amp;token_a=%2FwEAAAAAflsMqyhx.....&amp;amp;amp;token_expiresIn=86400&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Stub]]&lt;br /&gt;
[[Category:AOL]]&lt;br /&gt;
[[Category:AIM]]&lt;br /&gt;
[[Category:Protocols/WebAPI]]&lt;br /&gt;
[[Category:Protocols/WebAPI/Auth]]&lt;br /&gt;
[[Category:Protocols/WebAPI/Auth/WebApp]]&lt;br /&gt;
[[Category:Work_In_Progress]]&lt;/div&gt;</summary>
		<author><name>Animadoria</name></author>
	</entry>
</feed>