CINXE.COM
Extension:OAuth - MediaWiki
<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-disabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-disabled skin-theme-clientpref-day vector-toc-available" lang="en" dir="ltr"> <head> <meta charset="UTF-8"> <title>Extension:OAuth - MediaWiki</title> <script>(function(){var className="client-js vector-feature-language-in-header-disabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-disabled skin-theme-clientpref-day vector-toc-available";var cookie=document.cookie.match(/(?:^|; )mediawikiwikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""], "wgDefaultDateFormat":"dmy","wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgRequestId":"b2f0c9e1-ba6f-4647-a6e2-3762cbb9d87d","wgCanonicalNamespace":"Extension","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":102,"wgPageName":"Extension:OAuth","wgTitle":"OAuth","wgCurRevisionId":6502188,"wgRevisionId":6502188,"wgArticleId":138452,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["Extensions without an image","Extensions with release branches compatibility policy","Stable extensions","User identity extensions","User rights extensions","API extensions","GPL licensed extensions","Extensions in Wikimedia version control","Extensions which add rights","AbuseFilter-builder extensions","AbuseFilter-computeVariable extensions","AbuseFilter-generateUserVars extensions","ApiRsdServiceApis extensions","BeforeCreateEchoEvent extensions", "ChangeTagCanCreate extensions","ChangeTagsListActive extensions","GetPreferences extensions","ListDefinedTags extensions","LoadExtensionSchemaUpdates extensions","LoginFormValidErrorMessages extensions","MergeAccountFromTo extensions","MessagesPreLoad extensions","SetupAfterCache extensions","SpecialPageAfterExecute extensions","SpecialPageBeforeFormDisplay extensions","SpecialPage initList extensions","TestCanonicalRedirect extensions","All extensions","Extensions requiring Composer with git","Extensions used on Wikimedia","Extensions included in Miraheze","Extensions included in MyWikis","Extensions included in ProWiki","Extensions included in wiki.gg","Extensions included in WikiForge"],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgRelevantPageName":"Extension:OAuth","wgRelevantArticleId":138452,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgNoticeProject":"mediawiki", "wgCiteReferencePreviewsActive":true,"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgVisualEditor":{"pageLanguageCode":"en","pageLanguageDir":"ltr","pageVariantFallbacks":"en"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":false,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":20000,"wgInternalRedirectTargetUrl":"/wiki/Extension:OAuth","wgTranslatePageTranslation":"source","wgCentralAuthMobileDomain":false,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"personal","wgULSisCompactLinksEnabled":true,"wgVector2022LanguageInHeader":false,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q21677849","wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"]};RLSTATE={"ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading", "ext.translate.tag.languages":"ready","ext.pygments":"ready","skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","jquery.makeCollapsible.styles":"ready","ext.translate.edit.documentation.styles":"ready","ext.translate":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.pt":"ready","wikibase.client.init":"ready","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["mediawiki.action.view.redirect","ext.pygments.view","site","mediawiki.page.ready","jquery.makeCollapsible","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.translate.pagetranslation.uls","ext.urlShortener.toolbar","ext.centralauth.centralautologin","mmv.bootstrap","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.compactlinks","ext.uls.interface", "wikibase.client.vector-2022","ext.checkUser.clientHints","wikibase.sidebar.tracking"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=en&modules=ext.pygments%2Ctranslate%2CwikimediaBadges%7Cext.translate.edit.documentation.styles%7Cext.translate.tag.languages%7Cext.uls.pt%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediamessages.styles%7Cjquery.makeCollapsible.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&only=styles&skin=vector-2022"> <script async="" src="/w/load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=en&modules=site.styles&only=styles&skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.4"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=1120"> <meta property="og:site_name" content="MediaWiki"> <meta property="og:title" content="Extension:OAuth - MediaWiki"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//m.mediawiki.org/wiki/Extension:OAuth"> <link rel="alternate" type="application/x-wiki" title="Edit" href="/w/index.php?title=Extension:OAuth&action=edit"> <link rel="apple-touch-icon" href="/static/apple-touch/mediawiki.png"> <link rel="icon" href="/static/favicon/mediawiki.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="MediaWiki (en)"> <link rel="EditURI" type="application/rsd+xml" href="//www.mediawiki.org/w/api.php?action=rsd"> <link rel="canonical" href="https://www.mediawiki.org/wiki/Extension:OAuth"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/"> <link rel="alternate" type="application/atom+xml" title="MediaWiki Atom feed" href="/w/index.php?title=Special:RecentChanges&feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-102 ns-subject mw-editable page-Extension_OAuth rootpage-Extension_OAuth skin-vector-2022 action-view"><a class="mw-jump-link" href="#bodyContent">Jump to content</a> <div class="vector-header-container"> <header class="vector-header mw-header"> <div class="vector-header-start"> <nav class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" > <input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="Main menu" > <label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span> <span class="vector-dropdown-label-text">Main menu</span> </label> <div class="vector-dropdown-content"> <div id="vector-main-menu-unpinned-container" class="vector-unpinned-container"> <div id="vector-main-menu" class="vector-main-menu vector-pinnable-element"> <div class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned" data-feature-name="main-menu-pinned" data-pinnable-element-id="vector-main-menu" data-pinned-container-id="vector-main-menu-pinned-container" data-unpinned-container-id="vector-main-menu-unpinned-container" > <div class="vector-pinnable-header-label">Main menu</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">hide</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> Navigation </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/MediaWiki" title="Visit the main page [z]" accesskey="z"><span>Main page</span></a></li><li id="n-mw-download" class="mw-list-item"><a href="/wiki/Download"><span>Get MediaWiki</span></a></li><li id="n-mw-extensions" class="mw-list-item"><a href="/wiki/Special:MyLanguage/Category:Extensions"><span>Get extensions</span></a></li><li id="n-blog-text" class="mw-list-item"><a href="https://techblog.wikimedia.org/"><span>Tech blog</span></a></li><li id="n-mw-contribute" class="mw-list-item"><a href="/wiki/Special:MyLanguage/How_to_contribute"><span>Contribute</span></a></li> </ul> </div> </div> <div id="p-support" class="vector-menu mw-portlet mw-portlet-support" > <div class="vector-menu-heading"> Support </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-help" class="mw-list-item"><a href="/wiki/Special:MyLanguage/Help:Contents" title="The place to find out"><span>User help</span></a></li><li id="n-mw-faq" class="mw-list-item"><a href="/wiki/Special:MyLanguage/Manual:FAQ"><span>FAQ</span></a></li><li id="n-mw-manual" class="mw-list-item"><a href="/wiki/Special:MyLanguage/Manual:Contents"><span>Technical manual</span></a></li><li id="n-mw-supportdesk" class="mw-list-item"><a href="/wiki/Project:Support_desk"><span>Support desk</span></a></li><li id="n-mw-communication" class="mw-list-item"><a href="/wiki/Special:MyLanguage/Communication"><span>Communication</span></a></li> </ul> </div> </div> <div id="p-development" class="vector-menu mw-portlet mw-portlet-development" > <div class="vector-menu-heading"> Development </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mw-developerportal" class="mw-list-item"><a href="https://developer.wikimedia.org/"><span>Developer portal</span></a></li><li id="n-svn-statistics" class="mw-list-item"><a href="/wiki/Development_statistics"><span>Code statistics</span></a></li> </ul> </div> </div> <div id="p-mediawiki.org" class="vector-menu mw-portlet mw-portlet-mediawiki_org" > <div class="vector-menu-heading"> mediawiki.org </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-portal" class="mw-list-item"><a href="/wiki/Project:Help" title="About the project, what you can do, where to find things"><span>Community portal</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Special:RecentChanges" title="A list of recent changes in the wiki [r]" accesskey="r"><span>Recent changes</span></a></li><li id="n-mw-translate" class="mw-list-item"><a href="/wiki/Special:LanguageStats"><span>Translate content</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Special:Random" title="Load a random page [x]" accesskey="x"><span>Random page</span></a></li><li id="n-mw-discussion" class="mw-list-item"><a href="/wiki/Project:Village_Pump"><span>Village pump</span></a></li><li id="n-Sandboxlink-portlet-label" class="mw-list-item"><a href="/wiki/Project:Sandbox"><span>Sandbox</span></a></li> </ul> </div> </div> <div id="p-lang" class="vector-menu mw-portlet mw-portlet-lang" > <div class="vector-menu-heading"> In other languages </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-add wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q21677849#sitelinks-wikipedia" title="Add interlanguage links" class="wbc-editpage">Add links</a></span></div> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/MediaWiki" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/mediawikiwiki.svg" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="MediaWiki" src="/static/images/mobile/copyright/mediawikiwiki-wordmark.svg" style="width: 7.5em; height: 1.125em;"> </span> </a> </div> <div class="vector-header-end"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/wiki/Special:Search" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Search MediaWiki [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Search</span> </a> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width"> <form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button"> <div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Search MediaWiki" aria-label="Search MediaWiki" autocapitalize="sentences" title="Search MediaWiki [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Special:Search"> </div> <button class="cdx-button cdx-search-input__end-button">Search</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="Personal tools"> <div class="vector-user-links-main"> <div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-uls" class="mw-list-item active user-links-collapsible-item"><a data-mw="interface" href="#" class="uls-trigger cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet"><span class="vector-icon mw-ui-icon-wikimedia-language mw-ui-icon-wikimedia-wikimedia-language"></span> <span>English</span></a> </li> </ul> </div> </div> <div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="Change the appearance of the page's font size, width, and color" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="Appearance" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">Appearance</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="https://donate.wikimedia.org/?utm_source=donate&utm_medium=sidebar&utm_campaign=spontaneous&uselang=en" class=""><span>Donate</span></a> </li> <li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:CreateAccount&returnto=Extension%3AOAuth" title="You are encouraged to create an account and log in; however, it is not mandatory" class=""><span>Create account</span></a> </li> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:UserLogin&returnto=Extension%3AOAuth" title="You are encouraged to log in; however, it is not mandatory [o]" accesskey="o" class=""><span>Log in</span></a> </li> </ul> </div> </div> </div> <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out" title="More options" > <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="Personal tools" > <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span> <span class="vector-dropdown-label-text">Personal tools</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="User menu" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport" class="user-links-collapsible-item mw-list-item"><a href="https://donate.wikimedia.org/?utm_source=donate&utm_medium=sidebar&utm_campaign=spontaneous&uselang=en"><span>Donate</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:CreateAccount&returnto=Extension%3AOAuth" title="You are encouraged to create an account and log in; however, it is not mandatory"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>Create account</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:UserLogin&returnto=Extension%3AOAuth" title="You are encouraged to log in; however, it is not mandatory [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>Log in</span></a></li> </ul> </div> </div> <div id="p-user-menu-anon-editor" class="vector-menu mw-portlet mw-portlet-user-menu-anon-editor" > <div class="vector-menu-heading"> Pages for logged out editors <a href="/wiki/Help:Introduction" aria-label="Learn more about editing"><span>learn more</span></a> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/Special:MyContributions" title="A list of edits made from this IP address [y]" accesskey="y"><span>Contributions</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Special:MyTalk" title="Discussion about edits from this IP address [n]" accesskey="n"><span>Talk</span></a></li> </ul> </div> </div> </div> </div> </nav> </div> </header> </div> <div class="mw-page-container"> <div class="mw-page-container-inner"> <div class="vector-sitenotice-container"> <div id="siteNotice"><!-- CentralNotice --></div> </div> <div class="vector-column-start"> <div class="vector-main-menu-container"> <div id="mw-navigation"> <nav id="mw-panel" class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-pinned-container" class="vector-pinned-container"> </div> </nav> </div> </div> <div class="vector-sticky-pinned-container"> <nav id="mw-panel-toc" aria-label="Contents" data-event-name="ui.sidebar-toc" class="mw-table-of-contents-container vector-toc-landmark"> <div id="vector-toc-pinned-container" class="vector-pinned-container"> <div id="vector-toc" class="vector-toc vector-pinnable-element"> <div class="vector-pinnable-header vector-toc-pinnable-header vector-pinnable-header-pinned" data-feature-name="toc-pinned" data-pinnable-element-id="vector-toc" > <h2 class="vector-pinnable-header-label">Contents</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">hide</button> </div> <ul class="vector-toc-contents" id="mw-panel-toc-list"> <li id="toc-mw-content-text" class="vector-toc-list-item vector-toc-level-1"> <a href="#" class="vector-toc-link"> <div class="vector-toc-text">Beginning</div> </a> </li> <li id="toc-Requirements" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Requirements"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>Requirements</span> </div> </a> <ul id="toc-Requirements-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Installation" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Installation"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Installation</span> </div> </a> <ul id="toc-Installation-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Configuration" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Configuration"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>Configuration</span> </div> </a> <button aria-controls="toc-Configuration-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Configuration subsection</span> </button> <ul id="toc-Configuration-sublist" class="vector-toc-list"> <li id="toc-Parameters" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Parameters"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.1</span> <span>Parameters</span> </div> </a> <ul id="toc-Parameters-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-User_rights" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#User_rights"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.2</span> <span>User rights</span> </div> </a> <ul id="toc-User_rights-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Endpoints" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Endpoints"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>Endpoints</span> </div> </a> <button aria-controls="toc-Endpoints-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Endpoints subsection</span> </button> <ul id="toc-Endpoints-sublist" class="vector-toc-list"> <li id="toc-OAuth_2.0_REST_endpoints" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#OAuth_2.0_REST_endpoints"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.1</span> <span>OAuth 2.0 REST endpoints</span> </div> </a> <ul id="toc-OAuth_2.0_REST_endpoints-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-See_also" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#See_also"> <div class="vector-toc-text"> <span class="vector-toc-numb">5</span> <span>See also</span> </div> </a> <ul id="toc-See_also-sublist" class="vector-toc-list"> </ul> </li> </ul> </div> </div> </nav> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <nav aria-label="Contents" class="vector-toc-landmark"> <div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" > <input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="Toggle the table of contents" > <label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Toggle the table of contents</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-namespace">Extension</span><span class="mw-page-title-separator">:</span><span class="mw-page-title-main">OAuth</span></h1> <div class="mw-indicators"> <div id="mw-indicator-phabricator-project" class="mw-indicator"><div class="mw-parser-output"><div class="mw-parser-output"><style data-mw-deduplicate="TemplateStyles:r6605561">.mw-parser-output .tpl-badge{background-color:var(--background-color-progressive-subtle,#eaf3ff);color:var(--color-base,#202122);border-radius:10px;display:inline-block;font-size:90%;padding:5px 8px}</style><div class="tpl-badge"><a href="/wiki/Special:MyLanguage/Phabricator" title="Special:MyLanguage/Phabricator">Issue tracker</a>: <a href="https://phabricator.wikimedia.org/tag/mediawiki-extensions-oauth/" class="extiw" title="phab:tag/mediawiki-extensions-oauth/"><b>#MediaWiki-extensions-OAuth</b></a></div></div></div></div> </div> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="Namespaces"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-extension" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Extension:OAuth" title="View the subject page [c]" accesskey="c"><span>Extension</span></a></li><li id="ca-talk" class="vector-tab-noicon mw-list-item"><a href="/wiki/Extension_talk:OAuth" rel="discussion" title="Discussion about the content page [t]" accesskey="t"><span>Discussion</span></a></li> </ul> </div> </div> <div id="vector-variants-dropdown" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="vector-variants-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-variants-dropdown" class="vector-dropdown-checkbox " aria-label="Change language variant" > <label id="vector-variants-dropdown-label" for="vector-variants-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">English</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="Views"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Extension:OAuth"><span>Read</span></a></li><li id="ca-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Extension:OAuth&action=edit" title="Edit the source code of this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Extension:OAuth&action=history" title="Past revisions of this page [h]" accesskey="h"><span>View history</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="Tools" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">Tools</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">Tools</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">hide</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="More options" > <div class="vector-menu-heading"> Actions </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="selected vector-more-collapsible-item mw-list-item"><a href="/wiki/Extension:OAuth"><span>Read</span></a></li><li id="ca-more-edit" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Extension:OAuth&action=edit" title="Edit the source code of this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Extension:OAuth&action=history"><span>View history</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> General </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Special:WhatLinksHere/Extension:OAuth" title="A list of all wiki pages that link here [j]" accesskey="j"><span>What links here</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Special:RecentChangesLinked/Extension:OAuth" rel="nofollow" title="Recent changes in pages linked from this page [k]" accesskey="k"><span>Related changes</span></a></li><li id="t-upload" class="mw-list-item"><a href="//commons.wikimedia.org/wiki/Special:UploadWizard" title="Upload files [u]" accesskey="u"><span>Upload file</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Special:SpecialPages" title="A list of all special pages [q]" accesskey="q"><span>Special pages</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=Extension:OAuth&oldid=6502188" title="Permanent link to this revision of this page"><span>Permanent link</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=Extension:OAuth&action=info" title="More information about this page"><span>Page information</span></a></li><li id="t-cite" class="mw-list-item"><a href="/w/index.php?title=Special:CiteThisPage&page=Extension%3AOAuth&id=6502188&wpFormIdentifier=titleform" title="Information on how to cite this page"><span>Cite this page</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Special:UrlShortener&url=https%3A%2F%2Fwww.mediawiki.org%2Fwiki%2FExtension%3AOAuth"><span>Get shortened URL</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Special:QrCode&url=https%3A%2F%2Fwww.mediawiki.org%2Fwiki%2FExtension%3AOAuth"><span>Download QR code</span></a></li> </ul> </div> </div> <div id="p-coll-print_export" class="vector-menu mw-portlet mw-portlet-coll-print_export" > <div class="vector-menu-heading"> Print/export </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="coll-create_a_book" class="mw-list-item"><a href="/w/index.php?title=Special:Book&bookcmd=book_creator&referer=Extension%3AOAuth"><span>Create a book</span></a></li><li id="coll-download-as-rl" class="mw-list-item"><a href="/w/index.php?title=Special:DownloadAsPdf&page=Extension%3AOAuth&action=show-download-screen"><span>Download as PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="/w/index.php?title=Extension:OAuth&printable=yes" title="Printable version of this page [p]" accesskey="p"><span>Printable version</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects" > <div class="vector-menu-heading"> In other projects </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q21677849" title="Link to connected data repository item [g]" accesskey="g"><span>Wikidata item</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">Appearance</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">hide</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div id="siteSub" class="noprint">From mediawiki.org</div> </div> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-pt-translate-header noprint nomobile" dir="ltr" lang="en"><a href="/w/index.php?title=Special:Translate&group=page-Extension%3AOAuth&action=page&filter=&action_source=translate_page" title="Special:Translate">Translate this page</a></div><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><div class="mw-pt-languages noprint navigation-not-searchable" lang="en" dir="ltr"><div class="mw-pt-languages-label">Languages:</div><ul class="mw-pt-languages-list"><li><a href="/wiki/Extension:OAuth/id" class="mw-pt-progress mw-pt-progress--low" title="Extension:OAuth/id (4% translated)" lang="id" dir="ltr">Bahasa Indonesia</a></li> <li><a href="/wiki/Extension:OAuth/de" class="mw-pt-progress mw-pt-progress--med" title="Erweiterung:OAuth (22% translated)" lang="de" dir="ltr">Deutsch</a></li> <li><span class="mw-pt-languages-ui mw-pt-languages-selected mw-pt-progress mw-pt-progress--complete" lang="en" dir="ltr">English</span></li> <li><a href="/wiki/Extension:OAuth/tr" class="mw-pt-progress mw-pt-progress--med" title="Extension:OAuth (17% translated)" lang="tr" dir="ltr">Türkçe</a></li> <li><a href="/wiki/Extension:OAuth/es" class="mw-pt-progress mw-pt-progress--low" title="Extension:OAuth/es (2% translated)" lang="es" dir="ltr">español</a></li> <li><a href="/wiki/Extension:OAuth/fr" class="mw-pt-progress mw-pt-progress--complete" title="Extension:OAuth (100% translated)" lang="fr" dir="ltr">français</a></li> <li><a href="/wiki/Extension:OAuth/pl" class="mw-pt-progress mw-pt-progress--med" title="Extension:OAuth/pl (17% translated)" lang="pl" dir="ltr">polski</a></li> <li><a href="/wiki/Extension:OAuth/cs" class="mw-pt-progress mw-pt-progress--low" title="Rozšíření:OAuth (1% translated)" lang="cs" dir="ltr">čeština</a></li> <li><a href="/wiki/Extension:OAuth/ru" class="mw-pt-progress mw-pt-progress--med" title="Расширение:OAuth (42% translated)" lang="ru" dir="ltr">русский</a></li> <li><a href="/wiki/Extension:OAuth/zh" class="mw-pt-progress mw-pt-progress--med" title="Extension: (23% translated)" lang="zh" dir="ltr">中文</a></li> <li><a href="/wiki/Extension:OAuth/ja" class="mw-pt-progress mw-pt-progress--high" title="Extension:OAuth (70% translated)" lang="ja" dir="ltr">日本語</a></li> <li><a href="/wiki/Extension:OAuth/ko" class="mw-pt-progress mw-pt-progress--low" title="확장기능:OAuth (1% translated)" lang="ko" dir="ltr">한국어</a></li></ul></div> <style data-mw-deduplicate="TemplateStyles:r6353907">.mw-parser-output .hatnote{font-style:italic;padding-bottom:0.4em;margin-bottom:0.4em;border-bottom:1px solid #ccc}.mw-parser-output .hatnote.no-border{border-bottom:none}</style><div role="note" class="hatnote">Not to be confused with <a href="/wiki/Extension:OATHAuth" title="Extension:OATHAuth">Extension:OATHAuth</a> or <a href="/wiki/Extension:WSOAuth" title="Extension:WSOAuth">Extension:WSOAuth</a>.</div> <style data-mw-deduplicate="TemplateStyles:r6651102">.mw-parser-output .infobox{box-sizing:border-box;border:2px solid var(--border-color-base,#a2a9b1);width:280px;border-collapse:collapse;border-spacing:0;background-color:white;color:#333;clear:right;float:right;margin:0 0 0.5em 0.5em}.mw-parser-output .infobox-rtl{clear:left;float:left;margin:0 0.5em 0.5em 0}.mw-parser-output .infobox th{text-align:left;padding:0.2em 0.5em;vertical-align:top}.mw-parser-output .infobox-rtl th{text-align:right}@media(max-width:719px){body.mediawiki .mw-parser-output .infobox{float:none;clear:both;width:100%;margin:0 0 .5em 0}}.mw-parser-output .infobox td{border:none;padding:0.2em 0.5em;vertical-align:top}.mw-parser-output .infobox-header{background-color:#a2a9b1;color:#FFF;text-align:left}.mw-parser-output .infobox-header a{color:#FFF}.mw-parser-output .infobox-header td,.mw-parser-output .infobox-header th{padding:0.5em 0.5em}.mw-parser-output .infobox-header img{padding:0 0.2em 0 0.5em}@media screen{html.skin-theme-clientpref-night .mw-parser-output .infobox{background-color:inherit;color:inherit}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .infobox{background-color:inherit;color:inherit}}</style><style data-mw-deduplicate="TemplateStyles:r5577029">.mw-parser-output .ext-infobox>tbody>tr>td:first-child{vertical-align:top}.mw-parser-output .ext-infobox>tbody>tr>td abbr{white-space:nowrap}.mw-parser-output .ext-infobox .mw-collapsible-header,.mw-parser-output .ext-infobox .mw-collapsible-toggle{font-weight:bold}.mw-parser-output .ext-infobox .mw-collapsible-content{margin-top:.2em;padding-top:.2em}.mw-parser-output .ext-infobox-header>th,.mw-parser-output .ext-infobox caption,.mw-parser-output .ext-infobox-image,.mw-parser-output .ext-infobox-translate{text-align:center}.mw-parser-output .ext-infobox-name{font-size:130%;line-height:100%}.mw-parser-output .ext-infobox-type{min-width:7em}</style><style data-mw-deduplicate="TemplateStyles:r6424453">.mw-parser-output .ext-status-unstable,.mw-parser-output .ext-status-unstable td{border-color:#d33}.mw-parser-output .ext-status-unstable .ext-infobox-header{background-color:#d33;color:#fff}.mw-parser-output .ext-status-unstable .ext-infobox-header a{color:#fff}.mw-parser-output .ext-status-experimental,.mw-parser-output .ext-status-experimental td{border-color:#ff4500}.mw-parser-output .ext-status-experimental .ext-infobox-header{background-color:#ff4500;color:#FFF}.mw-parser-output .ext-status-experimental .ext-infobox-header a{color:#FFF}.mw-parser-output .ext-status-beta,.mw-parser-output .ext-status-beta td{border-color:#fc3}.mw-parser-output .ext-status-beta .ext-infobox-header{color:#000;background-color:#fc3}.mw-parser-output .ext-status-beta .ext-infobox-header a{color:#000}.mw-parser-output .ext-status-stable,.mw-parser-output .ext-status-stable td{border-color:#00af89}.mw-parser-output .ext-status-stable .ext-infobox-header{background-color:#068468;color:#FFF}.mw-parser-output .ext-status-stable .ext-infobox-header a{color:#fff}.mw-parser-output .ext-status-unmaintained,.mw-parser-output .ext-status-unmaintained td{border-color:#ac6600}.mw-parser-output .ext-status-unmaintained .ext-infobox-header{background-color:#ac6600;color:#FFF}.mw-parser-output .ext-status-unmaintained .ext-infobox-header a{color:#fff}</style> <table class="infobox infobox-ltr ext-infobox ext-status-stable"> <caption><b><a href="/wiki/Special:MyLanguage/Manual:Extensions" title="Special:MyLanguage/Manual:Extensions">MediaWiki extensions manual</a><span style="display:none"><a href="/wiki/Manual:Extensions" title="Manual:Extensions"> </a></span></b></caption> <tbody><tr class="infobox-header ext-infobox-header notheme"> <th colspan="2"><figure class="mw-halign-left" typeof="mw:File"><a href="/wiki/Special:MyLanguage/Template:Extension#Content" title="Special:MyLanguage/Template:Extension"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/1/1b/OOjs_UI_icon_advanced-invert.svg/40px-OOjs_UI_icon_advanced-invert.svg.png" decoding="async" width="40" height="40" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/1/1b/OOjs_UI_icon_advanced-invert.svg/60px-OOjs_UI_icon_advanced-invert.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/1/1b/OOjs_UI_icon_advanced-invert.svg/80px-OOjs_UI_icon_advanced-invert.svg.png 2x" data-file-width="20" data-file-height="20" /></a><figcaption></figcaption></figure> <span class="ext-infobox-name">OAuth</span><br /> <a href="/wiki/Special:MyLanguage/Extension_status" title="Special:MyLanguage/Extension status">Release status:</a><span style="display:none"><a href="/wiki/Extension_status" title="Extension status"> </a></span> stable</th> </tr> <tr> <td class="ext-infobox-type"><b><a href="/wiki/Special:MyLanguage/Template:Extension#type" title="Special:MyLanguage/Template:Extension">Implementation</a><span style="display:none"><a href="/wiki/Template:Extension#type" title="Template:Extension"> </a></span></b></td> <td><a href="/wiki/Special:MyLanguage/Manual:Security" title="Special:MyLanguage/Manual:Security">User identity</a><span style="display:none"><a href="/wiki/Manual:Security" title="Manual:Security"> </a></span>, <a href="/wiki/Special:MyLanguage/Manual:Security" title="Special:MyLanguage/Manual:Security">User rights</a><span style="display:none"><a href="/wiki/Manual:Security" title="Manual:Security"> </a></span>, <a href="/wiki/Special:MyLanguage/API:Action_API" title="Special:MyLanguage/API:Action API">API</a><span style="display:none"><a href="/wiki/API:Action_API" class="mw-redirect" title="API:Action API"> </a></span> </td></tr><tr> <td><b><a href="/wiki/Special:MyLanguage/Template:Extension#description" title="Special:MyLanguage/Template:Extension">Description</a><span style="display:none"><a href="/wiki/Template:Extension#description" title="Template:Extension"> </a></span></b></td> <td>Allow users to safely authorize another application ("consumer") to use the MediaWiki action API on their behalf.</td> </tr> <tr> <td><b><a href="/wiki/Special:MyLanguage/Template:Extension#username" title="Special:MyLanguage/Template:Extension">Author(s)</a><span style="display:none"><a href="/wiki/Template:Extension#username" title="Template:Extension"> </a></span></b></td> <td>Aaron Schulz, Chris Steipp, Brad Jorsch, Robert Vogel, Dejan Savuljesku</td> </tr> <tr> <td><b><a href="/wiki/Special:MyLanguage/Template:Extension#version" title="Special:MyLanguage/Template:Extension">Latest version</a><span style="display:none"><a href="/wiki/Template:Extension#version" title="Template:Extension"> </a></span></b></td> <td>1.1.0 (continuous updates)</td> </tr> <tr> <td><b><a href="/wiki/Special:MyLanguage/Compatibility#mediawiki_extensions" title="Special:MyLanguage/Compatibility">Compatibility policy</a><span style="display:none"><a href="/wiki/Compatibility#mediawiki_extensions" title="Compatibility"> </a></span></b></td> <td>Snapshots releases along with MediaWiki. Master is not backward compatible.</td> </tr> <tr> <td><a href="/wiki/Special:MyLanguage/Template:Extension#mediawiki" title="Special:MyLanguage/Template:Extension"><b>MediaWiki</b></a><span style="display:none"><a href="/wiki/Template:Extension#mediawiki" title="Template:Extension"> </a></span></td> <td>>= 1.43</td> </tr> <tr> <td><a href="/wiki/Special:MyLanguage/Template:Extension#needs-updatephp" title="Special:MyLanguage/Template:Extension"><abbr title="'php update.php' needed after installation"><b>Database changes</b></abbr></a><span style="display:none"><a href="/wiki/Template:Extension#needs-updatephp" title="Template:Extension"> </a></span></td> <td>Yes</td> </tr> <tr> <td><b><a href="/wiki/Special:MyLanguage/Template:Extension#table1" title="Special:MyLanguage/Template:Extension">Tables</a><span style="display:none"><a href="/wiki/Template:Extension#table1" title="Template:Extension"> </a></span></b></td> <td><a href="/wiki/Special:MyLanguage/Extension:OAuth/oauth_accepted_consumer_table" title="Special:MyLanguage/Extension:OAuth/oauth accepted consumer table">oauth_accepted_consumer</a><span style="display:none"><a href="/wiki/Extension:OAuth/oauth_accepted_consumer_table" title="Extension:OAuth/oauth accepted consumer table"> </a></span><br /><a href="/wiki/Special:MyLanguage/Extension:OAuth/oauth_registered_consumer_table" title="Special:MyLanguage/Extension:OAuth/oauth registered consumer table">oauth_registered_consumer</a><span style="display:none"><a href="/wiki/Extension:OAuth/oauth_registered_consumer_table" title="Extension:OAuth/oauth registered consumer table"> </a></span></td> </tr> <tr> <td><b><a href="/wiki/Special:MyLanguage/Template:Extension#license" title="Special:MyLanguage/Template:Extension">License</a><span style="display:none"><a href="/wiki/Template:Extension#license" title="Template:Extension"> </a></span></b></td> <td><a rel="nofollow" class="external text" href="//www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html">GNU General Public License 2.0 or later</a></td> </tr><tr> <td><b>Download</b></td> <td><div class="plainlinks"><a href="/wiki/Special:ExtensionDistributor/OAuth" title="Special:ExtensionDistributor/OAuth"><b>Download extension</b></a> <br />Git <sup>[<a href="/wiki/Special:MyLanguage/Download_from_Git" title="Special:MyLanguage/Download from Git">?</a>]</sup>: <ul><li><span class="plainlinks"><a rel="nofollow" class="external text" href="https://github.com/wikimedia/mediawiki-extensions-OAuth/archive/master.tar.gz">Download Git master</a></span></li> <li><a href="https://gerrit.wikimedia.org/g/mediawiki/extensions/OAuth" class="extiw" title="git:mediawiki/extensions/OAuth">browse repository</a> (<a href="https://phabricator.wikimedia.org/diffusion/EOAU" class="extiw" title="phab:diffusion/EOAU">Phabricator</a> · <a rel="nofollow" class="external text" href="https://github.com/wikimedia/mediawiki-extensions-OAuth">GitHub</a>)</li> <li><a href="https://gerrit.wikimedia.org/g/mediawiki/extensions/OAuth/%2Blog/master" class="extiw" title="git:mediawiki/extensions/OAuth/+log/master">commit history</a></li> <li><a rel="nofollow" class="external text" href="https://github.com/wikimedia/mediawiki-extensions-OAuth/graphs/contributors">repository contributors (GitHub)</a></li> <li><a href="https://gerrit.wikimedia.org/r/q/project:mediawiki/extensions/OAuth" class="extiw" title="gerrit:q/project:mediawiki/extensions/OAuth">code review</a></li></ul></div></td> </tr> <tr> <td><b><a href="/wiki/Special:MyLanguage/Template:Extension#help" title="Special:MyLanguage/Template:Extension">Help</a><span style="display:none"><a href="/wiki/Template:Extension#help" title="Template:Extension"> </a></span></b></td> <td><a href="/wiki/Special:MyLanguage/Help:OAuth" title="Special:MyLanguage/Help:OAuth">Help:OAuth</a><span style="display:none"><a href="/wiki/Help:OAuth" title="Help:OAuth"> </a></span></td> </tr> <tr> <td class="mw-collapsible mw-collapsed" colspan="2"> <div class="mw-collapsible-header"><a href="/wiki/Special:MyLanguage/Template:Extension#parameters" title="Special:MyLanguage/Template:Extension">Parameters</a><span style="display:none"><a href="/wiki/Template:Extension#parameters" title="Template:Extension"> </a></span></div> <div class="mw-collapsible-content"> <ul><li><span class="configvariable" title="Public key or a path to the public key used to verify OAuth2 resource requests">$wgOAuth2PublicKey</span></li> <li><span class="configvariable" title="Controls whether clients are required to send code challenges with OAuth2 requests. This only applies to non-confidential clients">$wgOAuth2RequireCodeChallengeForPublicClients</span></li> <li><span class="configvariable" title="Wiki ID of OAuth management wiki. On wiki farms, it makes sense to set this to a wiki that acts as a portal site, is decidated to management, or just handles login/authentication. It can, however, be set to any wiki if the farm. For single-wiki sites or farms where each wiki manages consumers separately, it should be left as false.">$wgMWOAuthCentralWiki</span></li> <li><span class="configvariable" title="Require HTTPs for user transactions that might send out secret tokens">$wgMWOAuthSecureTokenTransfer</span></li> <li><span class="configvariable" title="Source of shared user IDs, if enabled. If CentralIdLookup is available, this is the $providerId for CentralIdLookupFactory::getLookup(). Generally null would be what you want, to use the default provider. If that class is not available or the named provider is not found, this is * passed to the 'OAuthGetUserNamesFromCentralIds', 'OAuthGetLocalUserFromCentralId', 'OAuthGetCentralIdFromLocalUser', and 'OAuthGetCentralIdFromUserName' hooks. This has no effect if $wgMWOAuthSharedUserIDs is set to false.">$wgMWOAuthSharedUserSource</span></li> <li><span class="configvariable" title="Controls validity period for access tokens (stored in the cache configured in MWOAuthSessionCacheType). Does not apply to owner-only clients, whose access tokens are always non-expiring. Accepts ISO 8601 durations or can be set to "infinity" or false for non-expiring tokens. Defaults to one hour.">$wgOAuth2GrantExpirationInterval</span></li> <li><span class="configvariable" title="Rules for automatically approving new consumers (instead of requiring manual review by an OAuth admin before they are usable). Takes a list of conditions; meeting any one of the conditions results in auto-approval. Conditions are an associative array of <rule name> => <rule value>; the condition is met if every one of its rules is satisfied. Current the only supported rule is 'grants', which takes a list of grant names, and is satisfied when all the grants requested for the consumer are within that list.">$wgOAuthAutoApprove</span></li> <li><span class="configvariable" title="List of API module classes to disable when OAuth is used for the request">$wgMWOauthDisabledApiModules</span></li> <li><span class="configvariable" title="List of OAuth2 grants that client applications can use">$wgOAuth2EnabledGrantTypes</span></li> <li><span class="configvariable" title="The cache type used for OAuth 1.0 nonces. An index into $wgObjectCaches. The default is $wgMWOAuthSessionCacheType.">$wgMWOAuthNonceCacheType</span></li> <li><span class="configvariable" title="User groups to notify about new consumers that need to be reviewed">$wgOAuthGroupsToNotify</span></li> <li><span class="configvariable" title="Seconds after which an idle consumer request is marked as "expired"">$wgMWOAuthRequestExpirationAge</span></li> <li><span class="configvariable" title="Controls validity period for refresh tokens (stored in the cache configured in MWOAuthSessionCacheType). Accepts ISO 8601 durations or can be set to "infinity" or false for non-expiring tokens. Defaults to one month.">$wgOAuth2RefreshTokenTTL</span></li> <li><span class="configvariable" title="The cache type used for most temporary data storage. An index into $wgObjectCaches. The default is $wgSessionCacheType.">$wgMWOAuthSessionCacheType</span></li> <li><span class="configvariable" title="Prevent write activity to the database. When this is true, consumers cannot be added or updated, and new authorizations are prohibited. Authorization headers for existing authorizations will continue to work. Useful for migrating database tables">$wgMWOAuthReadOnly</span></li> <li><span class="configvariable" title="Private key or a path to the private key used to sign OAuth2 JWT being transmitted">$wgOAuth2PrivateKey</span></li> <li><span class="configvariable" title="Whether shared global user IDs are stored in the oauth tables. On wiki farms with a central authentication system (with integer user IDs) that share a single OAuth management wiki, this must be set to true. If wikis have a central authentication system but have their own OAuth management, then this can be either true or false. Otherwise it should always be set to false Setting this to true requires CentralIdLookup or an MWOAuth aware authentication extension. This value should not be changed after the fact to avoid ambigious IDs. Proper user ID migration should be done before any such changes.">$wgMWOAuthSharedUserIDs</span></li> <li><span class="configvariable" title="Random 32-bit string used to encrypt OAuth requests. Generate using "base64_encode(random_bytes(32))"">$wgOAuthSecretKey</span></li></ul></div></td> </tr> <tr> <td class="mw-collapsible mw-collapsed" colspan="2"> <div class="mw-collapsible-header"><a href="/wiki/Special:MyLanguage/Template:Extension#rights" title="Special:MyLanguage/Template:Extension">Added rights</a><span style="display:none"><a href="/wiki/Template:Extension#rights" title="Template:Extension"> </a></span></div> <div class="mw-collapsible-content"> <p class="mw-empty-elt"> </p> <ul><li><code>mwoauthproposeconsumer</code></li> <li><code>mwoauthupdateownconsumer</code></li> <li><code>mwoauthmanageconsumer</code></li> <li><code>mwoauthsuppress</code></li> <li><code>mwoauthviewsuppressed</code></li> <li><code>mwoauthviewprivate</code></li> <li><code>mwoauthmanagemygrants</code></li></ul></div></td> </tr> <tr> <td class="mw-collapsible mw-collapsed" colspan="2"> <div class="mw-collapsible-header"><a href="/wiki/Special:MyLanguage/Template:Extension#hook" title="Special:MyLanguage/Template:Extension">Hooks used</a><span style="display:none"><a href="/wiki/Template:Extension#hook" title="Template:Extension"> </a></span></div> <style data-mw-deduplicate="TemplateStyles:r6219282">.mw-parser-output .plainlist ul{line-height:inherit;list-style:none none;margin:0}.mw-parser-output .plainlist ul li{margin-bottom:0}</style><div class="plainlist mw-collapsible-content"><ul><li><a href="/wiki/Special:MyLanguage/Manual:Hooks/AbuseFilter-builder" title="Special:MyLanguage/Manual:Hooks/AbuseFilter-builder">AbuseFilter-builder</a><span style="display:none"><a href="/wiki/Manual:Hooks/AbuseFilter-builder" class="mw-redirect" title="Manual:Hooks/AbuseFilter-builder"> </a></span></li><li><a href="/wiki/Special:MyLanguage/Manual:Hooks/AbuseFilter-computeVariable" title="Special:MyLanguage/Manual:Hooks/AbuseFilter-computeVariable">AbuseFilter-computeVariable</a><span style="display:none"><a href="/wiki/Manual:Hooks/AbuseFilter-computeVariable" class="mw-redirect" title="Manual:Hooks/AbuseFilter-computeVariable"> </a></span></li><li><a href="/wiki/Special:MyLanguage/Manual:Hooks/AbuseFilter-generateUserVars" title="Special:MyLanguage/Manual:Hooks/AbuseFilter-generateUserVars">AbuseFilter-generateUserVars</a><span style="display:none"><a href="/wiki/Manual:Hooks/AbuseFilter-generateUserVars" class="mw-redirect" title="Manual:Hooks/AbuseFilter-generateUserVars"> </a></span></li><li><a href="/wiki/Special:MyLanguage/Manual:Hooks/ApiRsdServiceApis" title="Special:MyLanguage/Manual:Hooks/ApiRsdServiceApis">ApiRsdServiceApis</a><span style="display:none"><a href="/wiki/Manual:Hooks/ApiRsdServiceApis" title="Manual:Hooks/ApiRsdServiceApis"> </a></span></li><li><a href="/wiki/Special:MyLanguage/Manual:Hooks/BeforeCreateEchoEvent" title="Special:MyLanguage/Manual:Hooks/BeforeCreateEchoEvent">BeforeCreateEchoEvent</a><span style="display:none"><a href="/wiki/Manual:Hooks/BeforeCreateEchoEvent" class="mw-redirect" title="Manual:Hooks/BeforeCreateEchoEvent"> </a></span></li><li><a href="/wiki/Special:MyLanguage/Manual:Hooks/ChangeTagCanCreate" title="Special:MyLanguage/Manual:Hooks/ChangeTagCanCreate">ChangeTagCanCreate</a><span style="display:none"><a href="/wiki/Manual:Hooks/ChangeTagCanCreate" title="Manual:Hooks/ChangeTagCanCreate"> </a></span></li><li><a href="/wiki/Special:MyLanguage/Manual:Hooks/ChangeTagsListActive" title="Special:MyLanguage/Manual:Hooks/ChangeTagsListActive">ChangeTagsListActive</a><span style="display:none"><a href="/wiki/Manual:Hooks/ChangeTagsListActive" title="Manual:Hooks/ChangeTagsListActive"> </a></span></li><li><a href="/wiki/Special:MyLanguage/Manual:Hooks/GetPreferences" title="Special:MyLanguage/Manual:Hooks/GetPreferences">GetPreferences</a><span style="display:none"><a href="/wiki/Manual:Hooks/GetPreferences" title="Manual:Hooks/GetPreferences"> </a></span></li><li><a href="/wiki/Special:MyLanguage/Manual:Hooks/ListDefinedTags" title="Special:MyLanguage/Manual:Hooks/ListDefinedTags">ListDefinedTags</a><span style="display:none"><a href="/wiki/Manual:Hooks/ListDefinedTags" title="Manual:Hooks/ListDefinedTags"> </a></span></li><li><a href="/wiki/Special:MyLanguage/Manual:Hooks/LoadExtensionSchemaUpdates" title="Special:MyLanguage/Manual:Hooks/LoadExtensionSchemaUpdates">LoadExtensionSchemaUpdates</a><span style="display:none"><a href="/wiki/Manual:Hooks/LoadExtensionSchemaUpdates" title="Manual:Hooks/LoadExtensionSchemaUpdates"> </a></span></li><li><a href="/wiki/Special:MyLanguage/Manual:Hooks/LoginFormValidErrorMessages" title="Special:MyLanguage/Manual:Hooks/LoginFormValidErrorMessages">LoginFormValidErrorMessages</a><span style="display:none"><a href="/wiki/Manual:Hooks/LoginFormValidErrorMessages" title="Manual:Hooks/LoginFormValidErrorMessages"> </a></span></li><li><a href="/wiki/Special:MyLanguage/Manual:Hooks/MergeAccountFromTo" title="Special:MyLanguage/Manual:Hooks/MergeAccountFromTo">MergeAccountFromTo</a><span style="display:none"><a href="/wiki/Manual:Hooks/MergeAccountFromTo" class="mw-redirect" title="Manual:Hooks/MergeAccountFromTo"> </a></span></li><li><a href="/wiki/Special:MyLanguage/Manual:Hooks/MessagesPreLoad" title="Special:MyLanguage/Manual:Hooks/MessagesPreLoad">MessagesPreLoad</a><span style="display:none"><a href="/wiki/Manual:Hooks/MessagesPreLoad" title="Manual:Hooks/MessagesPreLoad"> </a></span></li><li><a href="/wiki/Special:MyLanguage/Manual:Hooks/SetupAfterCache" title="Special:MyLanguage/Manual:Hooks/SetupAfterCache">SetupAfterCache</a><span style="display:none"><a href="/wiki/Manual:Hooks/SetupAfterCache" title="Manual:Hooks/SetupAfterCache"> </a></span></li><li><a href="/wiki/Special:MyLanguage/Manual:Hooks/SpecialPageAfterExecute" title="Special:MyLanguage/Manual:Hooks/SpecialPageAfterExecute">SpecialPageAfterExecute</a><span style="display:none"><a href="/wiki/Manual:Hooks/SpecialPageAfterExecute" title="Manual:Hooks/SpecialPageAfterExecute"> </a></span></li><li><a href="/wiki/Special:MyLanguage/Manual:Hooks/SpecialPageBeforeFormDisplay" title="Special:MyLanguage/Manual:Hooks/SpecialPageBeforeFormDisplay">SpecialPageBeforeFormDisplay</a><span style="display:none"><a href="/wiki/Manual:Hooks/SpecialPageBeforeFormDisplay" title="Manual:Hooks/SpecialPageBeforeFormDisplay"> </a></span></li><li><a href="/wiki/Special:MyLanguage/Manual:Hooks/SpecialPage_initList" title="Special:MyLanguage/Manual:Hooks/SpecialPage initList">SpecialPage_initList</a><span style="display:none"><a href="/wiki/Manual:Hooks/SpecialPage_initList" title="Manual:Hooks/SpecialPage initList"> </a></span></li><li><a href="/wiki/Special:MyLanguage/Manual:Hooks/TestCanonicalRedirect" title="Special:MyLanguage/Manual:Hooks/TestCanonicalRedirect">TestCanonicalRedirect</a><span style="display:none"><a href="/wiki/Manual:Hooks/TestCanonicalRedirect" title="Manual:Hooks/TestCanonicalRedirect"> </a></span></li></ul></div> </td> </tr> <tr> <td class="mw-collapsible mw-collapsed" colspan="2"> <div class="mw-collapsible-header"><a href="/wiki/Special:MyLanguage/Template:Extension#newhook" title="Special:MyLanguage/Template:Extension">Hooks provided</a><span style="display:none"><a href="/wiki/Template:Extension#newhook" title="Template:Extension"> </a></span></div> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r6219282"><div class="plainlist mw-collapsible-content"><ul><li><a href="/wiki/Special:MyLanguage/Extension:OAuth/Hooks/OAuthReplaceMessage" title="Special:MyLanguage/Extension:OAuth/Hooks/OAuthReplaceMessage">OAuthReplaceMessage</a><span style="display:none"><a href="/wiki/Extension:OAuth/Hooks/OAuthReplaceMessage" title="Extension:OAuth/Hooks/OAuthReplaceMessage"> </a></span></li></ul></div> </td> </tr> <tr> <td title="This only includes downloads from Special:ExtensionDistributor. Other download methods such as git or bundled extensions are not included."><b>Quarterly downloads</b></td> <td>83 (Ranked 64<sup>th</sup>)</td> </tr> <tr> <td title=""><a rel="nofollow" class="external text" href="https://wikiapiary.com/wiki/Extension:OAuth"><b>Public wikis using</b></a></td> <td>982 (Ranked 246<sup>th</sup>)</td> </tr> <tr> <td colspan="2" class="ext-infobox-translate"> <a href="https://translatewiki.net/wiki/Special:Translate/ext-oauth" class="extiw" title="translatewiki:Special:Translate/ext-oauth">Translate the OAuth extension</a> if it is available at translatewiki.net</td> </tr><tr class="mw-empty-elt"> </tr> <tr> <td><b><a href="/wiki/Special:MyLanguage/MediaWiki-Vagrant#Using_roles" title="Special:MyLanguage/MediaWiki-Vagrant">Vagrant role</a><span style="display:none"><a href="/wiki/MediaWiki-Vagrant#Using_roles" title="MediaWiki-Vagrant"> </a></span></b></td> <td><a class="external text" href="https://doc.wikimedia.org/mediawiki-vagrant/puppet_classes/role_3A_3Aoauth.html">oauth</a></td> </tr> <tr> <td> <b><a href="/wiki/Special:MyLanguage/Phabricator" title="Special:MyLanguage/Phabricator">Issues</a><span style="display:none"><a href="/wiki/Phabricator" title="Phabricator"> </a></span></b></td> <td><a href="https://phabricator.wikimedia.org/tag/mediawiki-extensions-oauth" class="extiw" title="phab:tag/mediawiki-extensions-oauth">Open tasks</a> · <a class="external text" href="https://phabricator.wikimedia.org/maniphest/task/create/?projects=MediaWiki-extensions-OAuth">Report a bug</a></td> </tr> </tbody></table> <p>The <b>OAuth</b> extension implements an OAuth server in MediaWiki that supports both the <a rel="nofollow" class="external text" href="https://oauth.net/core/1.0a/">OAuth 1.0a</a> and <a rel="nofollow" class="external text" href="https://oauth.net/2/">OAuth 2.0</a> protocol versions. It allows third party developers to securely develop applications ("consumers"), to which users can give a limited set of permissions ("grants"), so that the application can use the <a href="/wiki/Special:MyLanguage/API:Action_API" title="Special:MyLanguage/API:Action API">MediaWiki action API</a> on the user's behalf. </p> <style data-mw-deduplicate="TemplateStyles:r6651107">.mw-parser-output .note{background-position:left 7px top 50%;padding:0.5em 0.5em 0.5em 40px;margin:0.5em 0;overflow:hidden;background-color:#f8f9fa;color:#333;background-repeat:no-repeat;border:1px solid #ddd}.mw-parser-output .note-inline{display:inline-block;vertical-align:middle}.mw-parser-output .note-info{background-color:#eaf3ff;color:#333;background-image:url("https://upload.wikimedia.org/wikipedia/commons/e/ec/OOjs_UI_icon_information-progressive.svg");background-size:25px;border-color:#a3caff;padding-left:40px;min-height:25px}.mw-parser-output .note-reminder{background-color:#fff9ea;color:#333;background-image:url("https://upload.wikimedia.org/wikipedia/commons/a/a8/OOjs_UI_icon_lightbulb-yellow.svg");background-size:25px;border-color:#fc3;min-height:25px}.mw-parser-output .note-warn{background-color:#fff9ea;color:#333;background-image:url("https://upload.wikimedia.org/wikipedia/commons/3/3b/OOjs_UI_icon_alert-warning.svg");background-size:25px;border-color:#fc3;min-height:25px}.mw-parser-output .note-error{background-color:#fee7e6;color:#333;background-image:url("https://upload.wikimedia.org/wikipedia/commons/b/bf/OOjs_UI_icon_notice-destructive.svg");background-size:25px;border-color:#c33;min-height:25px}@media screen{html.skin-theme-clientpref-night .mw-parser-output .note{background-color:transparent;color:inherit}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .note{background-color:transparent;color:inherit}}</style><div role="note" class="note note-info">If you're attempting to develop an application that uses OAuth on a wiki, see <a href="/wiki/Special:MyLanguage/OAuth/For_Developers" title="Special:MyLanguage/OAuth/For Developers">OAuth for Developers</a>. If you are trying to use an OAuth-enabled tool on a wiki which has this extension installed, see <a href="/wiki/Special:MyLanguage/Help:OAuth" title="Special:MyLanguage/Help:OAuth">OAuth</a><span style="display:none"><a href="/wiki/Help:OAuth" title="Help:OAuth"> </a></span>.</div> <meta property="mw:PageProp/toc" /> <div class="mw-heading mw-heading2"><h2 id="Requirements">Requirements</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Extension:OAuth&action=edit&section=1" title="Edit section: Requirements"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li>OAuth relies on the object cache for temporary tokens and sessions. This should work as long as <a href="/wiki/Special:MyLanguage/Manual:Configuration_settings#Cache" title="Special:MyLanguage/Manual:Configuration settings">cache configuration settings</a> are sane. (Older versions required <a href="/wiki/Special:MyLanguage/Memcached" title="Special:MyLanguage/Memcached">Memcached</a><span style="display:none"><a href="/wiki/Memcached" class="mw-redirect" title="Memcached"> </a></span> explicitly.)</li> <li>Currently, only MySQL and SQLite database backends are supported</li> <li>If the MediaWiki installation is private (i.e. users need to log in to have read access), Special:OAuth will need to be added to the <a href="/wiki/Special:MyLanguage/Manual:$wgWhitelistRead" title="Special:MyLanguage/Manual:$wgWhitelistRead">white list</a>.</li></ul> <div class="mw-heading mw-heading2"><h2 id="Installation">Installation</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Extension:OAuth&action=edit&section=2" title="Edit section: Installation"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a href="/wiki/Special:ExtensionDistributor/OAuth" title="Special:ExtensionDistributor/OAuth">Download</a> and move the extracted <code>OAuth</code> folder to your <code>extensions/</code> directory.<br />Developers and code contributors should install the extension <a href="/wiki/Special:MyLanguage/Download_from_Git" title="Special:MyLanguage/Download from Git">from Git</a> instead, using:<code class="mw-code mw-highlight" style="display:block">cd extensions/<br />git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/OAuth</code></li> <li>Only when installing from Git, run <a href="/wiki/Special:MyLanguage/Composer" title="Special:MyLanguage/Composer">Composer</a> to install PHP dependencies, by issuing <code>composer install --no-dev</code> in the extension directory. <small>(See <a href="https://phabricator.wikimedia.org/T173141" class="extiw" title="phabricator:T173141">task T173141</a> for potential complications.)</small></li> <li>Add the following code at the bottom of your <a href="/wiki/Special:MyLanguage/Manual:LocalSettings.php" title="Special:MyLanguage/Manual:LocalSettings.php">LocalSettings.php</a><span style="display:none"><a href="/wiki/Manual:LocalSettings.php" title="Manual:LocalSettings.php"> </a></span> file: <div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="nx">wfLoadExtension</span><span class="p">(</span> <span class="s1">'OAuth'</span> <span class="p">);</span> </pre></div></li> <li>Run the <b><a href="/wiki/Special:MyLanguage/Manual:Update.php" title="Special:MyLanguage/Manual:Update.php">update script</a></b> which will automatically create the necessary database tables that this extension needs.</li> <li><a href="#Configuration">Configure the general parameters as required.</a></li> <li><a href="#User_rights">Configure the user rights by putting them into the relevant groups in <code>$wgGroupPermissions</code>.</a></li> <li><span typeof="mw:File"><span><img alt="Yes" src="//upload.wikimedia.org/wikipedia/commons/thumb/f/f6/OOjs_UI_icon_check-constructive.svg/15px-OOjs_UI_icon_check-constructive.svg.png" decoding="async" width="15" height="15" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/f/f6/OOjs_UI_icon_check-constructive.svg/23px-OOjs_UI_icon_check-constructive.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/f/f6/OOjs_UI_icon_check-constructive.svg/30px-OOjs_UI_icon_check-constructive.svg.png 2x" data-file-width="20" data-file-height="20" /></span></span> <b>Done</b> – Navigate to <a href="/wiki/Special:Version" title="Special:Version">Special:Version</a> on your wiki to verify that the extension is successfully installed.</li></ul> <p><br /> <b>Vagrant installation:</b> </p> <ul><li>If using <a href="/wiki/Special:MyLanguage/MediaWiki-Vagrant" title="Special:MyLanguage/MediaWiki-Vagrant">Vagrant</a><span style="display:none"><a href="/wiki/MediaWiki-Vagrant" title="MediaWiki-Vagrant"> </a></span>, install with <code>vagrant roles enable oauth --provision</code></li></ul> <p>To assign a permission to some group, for example to sysops, you add following line to <code>LocalSettings.php</code>: </p> <div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="nv">$wgGroupPermissions</span><span class="p">[</span><span class="s1">'sysop'</span><span class="p">][</span><span class="s1">'mwoauthproposeconsumer'</span><span class="p">]</span> <span class="o">=</span> <span class="k">true</span><span class="p">;</span> </pre></div> <div class="mw-heading mw-heading2"><h2 id="Configuration">Configuration</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Extension:OAuth&action=edit&section=3" title="Edit section: Configuration"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-heading mw-heading3"><h3 id="Parameters">Parameters</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Extension:OAuth&action=edit&section=4" title="Edit section: Parameters"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <table class="wikitable prettytable"> <tbody><tr> <th>Variable name </th> <th>Default value </th> <th>Description </th></tr> <tr> <td><code>$wgMWOAuthCentralWiki</code> </td> <td><code class="mw-highlight mw-highlight-lang-php mw-content-ltr" style="" dir="ltr"><span class="k">false</span></code> </td> <td><a href="/wiki/Special:MyLanguage/Manual:Wiki_ID" title="Special:MyLanguage/Manual:Wiki ID">Wiki ID</a> of OAuth management wiki. On wiki farms, it makes sense to set this to a wiki that acts as a portal site, is dedicated to management, or just handles login/authentication. It can, however, be set to any wiki in the farm. For single-wiki sites or farms where each wiki manages consumers separately, it should be left as <code class="mw-highlight mw-highlight-lang-php mw-content-ltr" style="" dir="ltr"><span class="k">false</span></code>. </td></tr> <tr> <td><code>$wgMWOAuthSharedUserIDs</code> </td> <td><code class="mw-highlight mw-highlight-lang-php mw-content-ltr" style="" dir="ltr"><span class="k">false</span></code> </td> <td><span style="color:#d33">(deprecated)</span> Use <code>$wgMWOAuthSharedUserSource</code> instead <p>Whether shared global user IDs are stored in the oauth tables. On wiki farms with a central authentication system (with integer user IDs) that share a single OAuth management wiki, this must be set to true. If wikis have a central authentication system but have their own OAuth management, then this can be either <code class="mw-highlight mw-highlight-lang-php mw-content-ltr" style="" dir="ltr"><span class="k">true</span></code> or <code class="mw-highlight mw-highlight-lang-php mw-content-ltr" style="" dir="ltr"><span class="k">false</span></code>. Otherwise it should always be set to <code class="mw-highlight mw-highlight-lang-php mw-content-ltr" style="" dir="ltr"><span class="k">false</span></code>. Setting this to true requires CentralIdLookup or an MWOAuth aware authentication extension. This value should not be changed after the fact to avoid ambigious IDs. Proper user ID migration should be done before any such changes. </p> </td></tr> <tr> <td><code>$wgMWOAuthSharedUserSource</code> </td> <td><code class="mw-highlight mw-highlight-lang-php mw-content-ltr" style="" dir="ltr"><span class="k">null</span></code> </td> <td><a href="/wiki/Special:MyLanguage/Manual:Central_ID" title="Special:MyLanguage/Manual:Central ID">Central ID</a> provider when sharing OAuth credentials over a wiki farm <p>Source of shared user IDs, if enabled. If CentralIdLookup is available, this is the $providerId for CentralIdLookup::factory(). Generally null would be what you want, to use the default provider. If that class is not available or the named provider is not found, this is passed to the OAuthGetUserNamesFromCentralIds, OAuthGetLocalUserFromCentralId, OAuthGetCentralIdFromLocalUser, OAuthGetCentralIdFromUserName hooks. This has no effect if $wgMWOAuthSharedUserIDs is set to false. </p> </td></tr> <tr> <td><code>$wgMWOAuthRequestExpirationAge</code> </td> <td><code class="mw-highlight mw-highlight-lang-php mw-content-ltr" style="" dir="ltr"><span class="mi">2</span><span class="p">,</span><span class="mi">592</span><span class="p">,</span><span class="mo">000</span></code> (30 days) </td> <td>Seconds after which an idle request for a new Consumer is marked as "expired" </td></tr> <tr> <td><code>$wgMWOAuthSecureTokenTransfer</code> </td> <td><code class="mw-highlight mw-highlight-lang-php mw-content-ltr" style="" dir="ltr"><span class="k">true</span></code> </td> <td>Require SSL/TLS for returning Consumer and user secrets. This is required by <a href="//tools.ietf.org/html/rfc5849" class="extiw" title="rfc:5849">RFC<style data-mw-deduplicate="TemplateStyles:r4673781">'"`UNIQ--templatestyles-00000029-QINU`"'</style><span class="nowrap"> </span>5849</a>, however if a wiki wants to use OAuth, but doesn't support SSL, this option makes this configuration possible. This should be set to true for most production settings. </td></tr> <tr> <td><code>$wgOAuthSecretKey</code> </td> <td><code class="mw-highlight mw-highlight-lang-php mw-content-ltr" style="" dir="ltr"><span class="nv">$wgSecretKey</span></code> </td> <td>A secret configuration string (random 32-bit string generated using "base64_encode(random_bytes(32))") used to hmac the database-stored secret to produce the shared secrets for Consumers. This provides some protection against an attacker reading the values out of the consumer table (the attacker would also need $wgOAuthSecretKey to generate valid secrets), and some protection against potential weaknesses in the secret generation. If this string is compromised, the site should generate a new $wgOAuthSecretKey, which will invalidate Consumer authorizations that use HMAC/shared secret signatures instead of public/private keys. Consumers can regenerate their new shared secret by using the "Reset the secret key to a new value" option under Special:MWOAuthConsumerRegistration/update. If null, the value is set to $wgSecretKey. </td></tr> <tr> <td><code>$wgOAuthGroupsToNotify</code> </td> <td><code class="mw-highlight mw-highlight-lang-php mw-content-ltr" style="" dir="ltr"><span class="p">[]</span></code> </td> <td>The list of user groups which should be notified about new consumer proposals. Setting this will only have an effect when <a href="/wiki/Special:MyLanguage/Extension:Echo" title="Special:MyLanguage/Extension:Echo">Echo</a><span style="display:none"><a href="/wiki/Extension:Echo" title="Extension:Echo"> </a></span> is installed. </td></tr> <tr> <td><code>$wgMWOauthDisabledApiModules</code> </td> <td><code class="mw-highlight mw-highlight-lang-php mw-content-ltr" style="" dir="ltr"><span class="p">[]</span></code> </td> <td>List of API module classes to disable when OAuth is used for the request </td></tr> <tr> <td><code>$wgMWOAuthReadOnly</code> </td> <td><code class="mw-highlight mw-highlight-lang-php mw-content-ltr" style="" dir="ltr"><span class="k">false</span></code> </td> <td>Prevent write activity to the database. When this is set, consumers cannot be added or updated, and new authorizations are prohibited. Authorization headers for existing authorizations will continue to work. Useful for migrating database tables </td></tr> <tr> <td><code>$wgMWOAuthSessionCacheType</code> </td> <td><code class="mw-highlight mw-highlight-lang-php mw-content-ltr" style="" dir="ltr"><span class="nv">$wgSessionCacheType</span></code> </td> <td>The storage mechanism for session data. If null, it defaults to $wgSessionCacheType. </td></tr> <tr> <td><code>$wgOAuthAutoApprove</code> </td> <td><code>[]</code> </td> <td>Allows automatic immediate approval of low-risk apps. In the form of <code>[ 'grants' => [ <i>'grant1', 'grant2', ...</i> ] ]</code> </td></tr> <tr> <td><code>$wgOAuth2EnabledGrantTypes</code> </td> <td><div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="p">[</span> <span class="s2">"authorization_code"</span><span class="p">,</span> <span class="s2">"refresh_token"</span><span class="p">,</span> <span class="s2">"client_credentials"</span> <span class="p">]</span> </pre></div> </td> <td>List of OAuth2 grants that client applications can be allowed to use. Actual grants client application will be allowed to use can be any subset of grants listed here. Grants, other than the ones listed here, are considered legacy grants, and are not supported by this extension </td></tr> <tr> <td><code>$wgOAuth2PrivateKey</code> </td> <td><code class="mw-highlight mw-highlight-lang-php mw-content-ltr" style="" dir="ltr"><span class="s2">""</span></code> </td> <td>Private key or a path to the private key used to sign OAuth2 JWT being transmitted. See the <a rel="nofollow" class="external text" href="https://oauth2.thephpleague.com/installation/#generating-public-and-private-keys">OAuth 2.0 Server documentation</a> for how to generate the keys. </td></tr> <tr> <td><code>$wgOAuth2PublicKey</code> </td> <td><code class="mw-highlight mw-highlight-lang-php mw-content-ltr" style="" dir="ltr"><span class="s2">""</span></code> </td> <td>Public key or a path to the public key used to verify OAuth2 resource requests. </td></tr> <tr> <td><code>$wgOAuth2RequireCodeChallengeForPublicClients</code> </td> <td><code class="mw-highlight mw-highlight-lang-php mw-content-ltr" style="" dir="ltr"><span class="k">true</span></code> </td> <td>Controls whether clients are required to send code challenges with OAuth2 requests. This only applies to non-confidential clients. </td></tr> <tr> <td><code>$wgOAuth2GrantExpirationInterval</code> </td> <td><code class="mw-highlight mw-highlight-lang-php mw-content-ltr" style="" dir="ltr"><span class="s2">"PT1H"</span></code> (1 hour) </td> <td>Controls validity period for access tokens (stored in the cache configured in MWOAuthSessionCacheType). Does not apply to owner-only clients, whose access tokens are always non-expiring. Accepts ISO 8601 durations or can be set to "infinity" or false for non-expiring tokens. </td></tr> <tr> <td><code>$wgOAuth2RefreshTokenTTL</code> </td> <td><code class="mw-highlight mw-highlight-lang-php mw-content-ltr" style="" dir="ltr"><span class="s2">"P1M"</span></code> (1 month) </td> <td>Controls validity period for refresh tokens (stored in the cache configured in MWOAuthSessionCacheType). Accepts ISO 8601 durations or can be set to "infinity" or false for non-expiring tokens. </td></tr></tbody></table> <div class="mw-heading mw-heading3"><h3 id="User_rights">User rights</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Extension:OAuth&action=edit&section=5" title="Edit section: User rights"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <table class="wikitable prettytable"> <tbody><tr> <th>Right </th> <th>Description </th></tr> <tr> <td><code>mwoauthproposeconsumer</code></td> <td>Propose new OAuth consumers </td></tr> <tr> <td><code>mwoauthupdateownconsumer</code></td> <td>Update OAuth consumers you control </td></tr> <tr> <td><code>mwoauthmanageconsumer</code></td> <td>Manage OAuth consumers </td></tr> <tr> <td><code>mwoauthsuppress</code></td> <td>Suppress OAuth consumers </td></tr> <tr> <td><code>mwoauthviewsuppressed</code></td> <td>View suppressed OAuth consumers </td></tr> <tr> <td><code>mwoauthviewprivate</code></td> <td>View private OAuth data </td></tr> <tr> <td><code>mwoauthmanagemygrants</code></td> <td>Manage OAuth grants </td></tr></tbody></table> <div class="mw-heading mw-heading2"><h2 id="Endpoints">Endpoints</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Extension:OAuth&action=edit&section=6" title="Edit section: Endpoints"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-heading mw-heading3"><h3 id="OAuth_2.0_REST_endpoints">OAuth 2.0 REST endpoints</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Extension:OAuth&action=edit&section=7" title="Edit section: OAuth 2.0 REST endpoints"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The following REST endpoints are provided for OAuth 2.0 interaction </p> <table class="wikitable" style=""> <caption> </caption> <tbody><tr> <th>Path </th> <th>Description </th> <th>Allowed parameters </th> <th>Allowed method </th></tr> <tr> <td>/oauth2/authorize </td> <td>Used for retrieving authorization code when using authorization_code grant. </td> <td> <table class="wikitable"> <tbody><tr> <th>Name </th> <th>Required? </th> <th>Description </th></tr> <tr> <td>response_type</td> <td style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes">Yes </td> <td> </td></tr> <tr> <td>client_id</td> <td style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes">Yes </td> <td> </td></tr> <tr> <td>redirect_uri</td> <td style="background:#F99;vertical-align:middle;text-align:center;" class="table-no">No </td> <td>if present, must match the URI that was set when client was registered exactly </td></tr> <tr> <td>scope</td> <td style="background:#F99;vertical-align:middle;text-align:center;" class="table-no">No </td> <td> </td></tr> <tr> <td>state</td> <td style="background:#F99;vertical-align:middle;text-align:center;" class="table-no">No </td> <td> </td></tr> <tr> <td>code_challenge</td> <td style="background:#F99;vertical-align:middle;text-align:center;" class="table-no">No </td> <td>required if <code>$wgOAuth2RequireCodeChallengeForPublicClients</code> is <code>true</code> </td></tr> <tr> <td>code_challenge_method</td> <td style="background:#F99;vertical-align:middle;text-align:center;" class="table-no">No </td> <td>required if <code>$wgOAuth2RequireCodeChallengeForPublicClients</code> is <code>true</code> </td></tr></tbody></table> </td> <td>GET </td></tr> <tr> <td>/oauth2/access_token </td> <td>Used for requesting access tokens </td> <td> <table class="wikitable"> <tbody><tr> <th>Name </th> <th>Required? </th> <th>Description </th></tr> <tr> <td>grant_type</td> <td style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes">Yes </td> <td>type of grant used </td></tr> <tr> <td>client_id</td> <td style="background:#F99;vertical-align:middle;text-align:center;" class="table-no">No </td></tr> <tr> <td>client_secret</td> <td style="background:#F99;vertical-align:middle;text-align:center;" class="table-no">No </td> <td>required if client is <code>confidential</code> </td></tr> <tr> <td>redirect_uri</td> <td style="background:#F99;vertical-align:middle;text-align:center;" class="table-no">No </td> <td>if present, must match the URI that was set when client was registered exactly </td></tr> <tr> <td>scope</td> <td style="background:#F99;vertical-align:middle;text-align:center;" class="table-no">No </td></tr> <tr> <td>code</td> <td style="background:#F99;vertical-align:middle;text-align:center;" class="table-no">No </td> <td>required if <code>authorization_code</code> grant is used </td></tr> <tr> <td>refresh_token</td> <td style="background:#F99;vertical-align:middle;text-align:center;" class="table-no">No </td> <td>required if <code>refresh_token</code> grant is used </td></tr> <tr> <td>code_verifier</td> <td style="background:#F99;vertical-align:middle;text-align:center;" class="table-no">No </td></tr></tbody></table> </td> <td>POST </td></tr> <tr> <td>/oauth2/resource/{{type}} </td> <td>Used for retrieving protected resources using the access token issued previously. <p>Currently, two resource types can be retrieved using this endpoint, by replacing <code>{{type}}</code> placeholder with the type key: </p> <ul><li><code>profile</code> - retrieve the user profile of the user that is represented by the access token used to make the request - usually used for logging users in on 3rd party websites using MediaWiki</li> <li><code>scopes</code> - retrieve all scopes client (application) is allowed to use with the current access token</li></ul> </td> <td>No parameters are allowed, apart from the <code>{{type}}</code> parameter that is included in the path </td> <td>GET/POST </td></tr> <tr> <td>/oauth2/client </td> <td>Lists OAuth 1.0a or 2.0 clients for the logged-in user. Authentication can be achieved over <a href="/wiki/CentralAuth" class="mw-redirect" title="CentralAuth">CentralAuth</a> or by including an access token in the authorization header. <div style="display:block;margin-left:0;"><table class="mw-collapsible mw-collapsed" style="margin-top:.2em; border:1px solid silver;text-align:left; width: 100%;"><tbody><tr><th style="font-size:112%;background:#F8FCFF;color:black;text-align:center">Response example</th></tr><tr><td style="font-size:112%;background:white;border:solid 1px silver;padding:8px"> <div class="mw-highlight mw-highlight-lang-json mw-content-ltr" dir="ltr"><pre><span></span><span class="p">{</span> <span class="w"> </span><span class="nt">"clients"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"client_key"</span><span class="p">:</span><span class="w"> </span><span class="s2">"xxxxxxxxxxxxxx"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"TestFromCurl1807"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"version"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2.0"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"email"</span><span class="p">:</span><span class="w"> </span><span class="s2">"admin@example.com"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"callback_url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"http://example.com"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"scopes"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> <span class="w"> </span><span class="s2">"authonly"</span> <span class="w"> </span><span class="p">],</span> <span class="w"> </span><span class="nt">"registration"</span><span class="p">:</span><span class="w"> </span><span class="s2">"20200818230806"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"stage"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span> <span class="w"> </span><span class="nt">"oauth_version"</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span> <span class="w"> </span><span class="nt">"description"</span><span class="p">:</span><span class="w"> </span><span class="s2">"foo"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"allowed_grants"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> <span class="w"> </span><span class="s2">"authorization_code"</span> <span class="w"> </span><span class="p">],</span> <span class="w"> </span><span class="nt">"registration_formatted"</span><span class="p">:</span><span class="w"> </span><span class="s2">"23:08, 18 August 2020"</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="p">],</span> <span class="w"> </span><span class="nt">"total"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span> <span class="p">}</span> </pre></div> </td></tr></tbody></table></div> </td> <td> <ul><li><code>oauth_version</code> (optional) - either 1 (to return only OAuth 1.0a clients) or 2 (to return only OAuth 2.0 clients). Default: 2</li> <li>Pagination parameters <ul><li><code>limit</code> (optional) - maximum number of clients to return. Default: 25</li> <li><code>offset</code> (optional) - number of clients to skip before returning the first result. Default: 0</li></ul></li></ul> </td> <td>GET </td></tr> <tr> <td>/oauth2/client/{client_key}/reset_secret </td> <td>Resets a client secret. For owner-only clients, this endpoint also resets the access token. <div style="display:block;margin-left:0;"><table class="mw-collapsible mw-collapsed" style="margin-top:.2em; border:1px solid silver;text-align:left; width: 100%;"><tbody><tr><th style="font-size:112%;background:#F8FCFF;color:black;text-align:center">Response example</th></tr><tr><td style="font-size:112%;background:white;border:solid 1px silver;padding:8px"> <div class="mw-highlight mw-highlight-lang-json mw-content-ltr" dir="ltr"><pre><span></span><span class="p">{</span> <span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Example"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"client_key"</span><span class="p">:</span><span class="w"> </span><span class="s2">"xxxxxxxxxx"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"secret"</span><span class="p">:</span><span class="w"> </span><span class="s2">"xxxxxxxxxx"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"access_token"</span><span class="p">:</span><span class="w"> </span><span class="s2">"xxxxxxxxxx"</span> <span class="p">}</span> </pre></div> </td></tr></tbody></table></div> </td> <td> <table class="wikitable"> <tbody><tr> <th>Name </th> <th>Required? </th> <th>Description </th> <th>Default </th></tr> <tr> <td><code>client_key</code></td> <td style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes">Yes </td> <td> </td> <td>client identifier </td></tr> <tr> <td><code>reason</code></td> <td style="background:#F99;vertical-align:middle;text-align:center;" class="table-no">No </td> <td>string containing the reason for resetting the secret. </td> <td><code>''</code> </td></tr></tbody></table> </td> <td>POST </td></tr> <tr> <td>/oauth2/client </td> <td>Creates an OAuth 2.0 client. <div style="display:block;margin-left:0;"><table class="mw-collapsible mw-collapsed" style="margin-top:.2em; border:1px solid silver;text-align:left; width: 100%;"><tbody><tr><th style="font-size:112%;background:#F8FCFF;color:black;text-align:center">Response example</th></tr><tr><td style="font-size:112%;background:white;border:solid 1px silver;padding:8px"> <div class="mw-highlight mw-highlight-lang-json mw-content-ltr" dir="ltr"><pre><span></span><span class="p">{</span> <span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Example"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"client_key"</span><span class="p">:</span><span class="w"> </span><span class="s2">"xxxxxxxxxx"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"secret"</span><span class="p">:</span><span class="w"> </span><span class="s2">"xxxxxxxxxx"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"access_token"</span><span class="p">:</span><span class="w"> </span><span class="s2">"xxxxxxxxxx"</span> <span class="p">}</span> </pre></div> </td></tr></tbody></table></div> </td> <td> <table class="wikitable"> <tbody><tr> <th>Name </th> <th>Required? </th> <th>Description </th> <th>Default </th></tr> <tr> <td><code>name</code></td> <td style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes">Yes </td> <td>client name </td> <td> </td></tr> <tr> <td><code>description</code></td> <td style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes">Yes </td> <td>client description </td> <td> </td></tr> <tr> <td><code>email</code></td> <td style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes">Yes </td> <td>contact email </td> <td> </td></tr> <tr> <td><code>is_confidential</code></td> <td style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes">Yes </td> <td>set to true if the client is confidential; set to false for public clients like mobile and desktop apps </td> <td> </td></tr> <tr> <td><code>grant_types</code></td> <td style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes">Yes </td> <td>OAuth 2.0 grant types used by the client, one or more of the following: <code>authorization_code</code>, <code>refresh_token</code>, <code>client_credentials</code> </td> <td> </td></tr> <tr> <td><code>scopes</code></td> <td style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes">Yes </td> <td>OAuth 2.0 scopes, either <code>mwoauth-authonly</code>, <code>mwoauth-authonlyprivate</code> or the set of applicable <a href="https://meta.wikimedia.org/wiki/Special:ListGrants" class="extiw" title="meta:Special:ListGrants">grants</a> </td> <td> </td></tr> <tr> <td><code>version</code></td> <td style="background:#F99;vertical-align:middle;text-align:center;" class="table-no">No </td> <td>client version. </td> <td>1.0 </td></tr> <tr> <td><code>wiki</code></td> <td style="background:#F99;vertical-align:middle;text-align:center;" class="table-no">No </td> <td>applicable project. </td> <td>* for all wikis </td></tr> <tr> <td><code>owner_only</code></td> <td>? </td> <td>set to true for a client used only by the creating user </td> <td> </td></tr> <tr> <td><code>callback_url</code></td> <td style="background:#F99;vertical-align:middle;text-align:center;" class="table-no">No </td> <td>Return URL for authorizing users. </td> <td><code>''</code> </td></tr> <tr> <td><code>callback_is_prefix</code></td> <td style="background:#F99;vertical-align:middle;text-align:center;" class="table-no">No </td> <td>set to true to allow the client to specify a callback in requests and use the callback URL as a required prefix. </td> <td><code class="mw-highlight mw-highlight-lang-php mw-content-ltr" style="" dir="ltr"><span class="k">false</span></code> </td></tr></tbody></table> </td> <td>POST </td></tr></tbody></table> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r6651107"><div role="note" class="note note-info">If OAuth credentials are shared over a wiki farm, make sure that real names are used/hidden consistently across all wikis (using <a href="/wiki/Special:MyLanguage/Manual:$wgHiddenPrefs" title="Special:MyLanguage/Manual:$wgHiddenPrefs">$wgHiddenPrefs</a><span style="display:none"><a href="/wiki/Manual:$wgHiddenPrefs" title="Manual:$wgHiddenPrefs"> </a></span>). On wikis where real names are hidden, the OAuth permission request message that tells the user which information is shared does not mention the real name, so in that case there should not be any other wiki where the OAuth consumer may still get that information from.</div> <div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Extension:OAuth&action=edit&section=8" title="Edit section: See also"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a href="/wiki/Special:MyLanguage/Extension:OATHAuth" title="Special:MyLanguage/Extension:OATHAuth">Extension:OATHAuth</a><span style="display:none"><a href="/wiki/Extension:OATHAuth" title="Extension:OATHAuth"> </a></span> - A similarly named extension which implements a second authentication factor using OATH-based one-time passwords.</li> <li><a href="/wiki/Special:MyLanguage/Extension:WSOAuth" title="Special:MyLanguage/Extension:WSOAuth">Extension:WSOAuth</a><span style="display:none"><a href="/wiki/Extension:WSOAuth" title="Extension:WSOAuth"> </a></span> – A MediaWiki extension that lets your wiki delegate authentication to any OAuth provider using PluggableAuth, including a wiki that is running Extension:OAuth.</li> <li><a href="/wiki/Special:MyLanguage/oauthclient-php" title="Special:MyLanguage/oauthclient-php">Oauthclient-php</a><span style="display:none"><a href="/wiki/Oauthclient-php" title="Oauthclient-php"> </a></span> – A client library for OAuth consumers.</li></ul> <style data-mw-deduplicate="TemplateStyles:r6651108">.mw-parser-output table.ombox{margin:4px 10%;border-collapse:collapse;border:1px solid #a2a9b1;background-color:#f8f9fa;color:#333;box-sizing:border-box}.mw-parser-output .ombox td.mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ombox th.mbox-text,.mw-parser-output .ombox td.mbox-text{border:none;padding:0.25em 0.9em;width:100%}.mw-parser-output .ombox td.mbox-image{border:none;text-align:center;padding:2px 0 2px 0.9em}.mw-parser-output .ombox td.mbox-imageright{border:none;text-align:center;padding:2px 0.9em 2px 0}.mw-parser-output table.ombox-notice{border-color:#a2a9b1}.mw-parser-output table.ombox-speedy{background-color:#fee7e6;color:#333}.mw-parser-output table.ombox-speedy,.mw-parser-output table.ombox-delete{border-color:#b32424;border-width:2px}.mw-parser-output table.ombox-content{border-color:#f28500}.mw-parser-output table.ombox-style{border-color:#fc3}.mw-parser-output table.ombox-move{border-color:#9932cc}.mw-parser-output table.ombox-protection{border-color:#a2a9b1;border-width:2px}html body.mediawiki .mw-parser-output .ombox.mbox-small{clear:right;float:right;margin:4px 0 4px 1em;box-sizing:border-box;width:238px;font-size:88%;line-height:1.25em}@media screen{html.skin-theme-clientpref-night .mw-parser-output table.ombox{background-color:transparent;color:inherit}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output table.ombox{background-color:transparent;color:inherit}}</style><table class="ombox ombox-notice plainlinks" role="presentation" style="clear: both; margin-top: 0; margin-bottom: 0;"><tbody><tr><td class="mbox-image"><span class="skin-invert-image" typeof="mw:File"><span><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/8/8b/Wikimedia-logo_black.svg/40px-Wikimedia-logo_black.svg.png" decoding="async" width="40" height="40" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/8/8b/Wikimedia-logo_black.svg/60px-Wikimedia-logo_black.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/8/8b/Wikimedia-logo_black.svg/80px-Wikimedia-logo_black.svg.png 2x" data-file-width="512" data-file-height="512" /></span></span></td><td class="mbox-text">This extension is being used on one or more <a href="https://meta.wikimedia.org/wiki/Special:MyLanguage/Wikimedia_projects" class="extiw" title="m:Special:MyLanguage/Wikimedia projects">Wikimedia projects</a>. This probably means that the extension is stable and works well enough to be used by such high-traffic websites. Look for this extension's name in Wikimedia's <a class="external text" href="https://noc.wikimedia.org/conf/highlight.php?file=CommonSettings.php">CommonSettings.php</a> and <a class="external text" href="https://noc.wikimedia.org/conf/highlight.php?file=InitialiseSettings.php">InitialiseSettings.php</a> configuration files to see where it's installed. A full list of the extensions installed on a particular wiki can be seen on the wiki's <a href="/wiki/Special:Version" title="Special:Version">Special:Version</a> page.</td></tr></tbody></table> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r6651108"><table class="ombox ombox-notice" role="presentation"><tbody><tr><td class="mbox-image"><span typeof="mw:File"><span><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/e/ec/OOjs_UI_icon_information-progressive.svg/40px-OOjs_UI_icon_information-progressive.svg.png" decoding="async" width="40" height="40" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/e/ec/OOjs_UI_icon_information-progressive.svg/60px-OOjs_UI_icon_information-progressive.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/e/ec/OOjs_UI_icon_information-progressive.svg/80px-OOjs_UI_icon_information-progressive.svg.png 2x" data-file-width="20" data-file-height="20" /></span></span></td><td class="mbox-text">This extension is included in the following wiki farms/hosts and/or packages: <style data-mw-deduplicate="TemplateStyles:r6387430">.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li,.mw-parser-output .hlist .mw-empty-elt{display:none}.mw-parser-output .hlist dt:after{content:": "}.mw-parser-output .hlist dd:after,.mw-parser-output .hlist li:after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child:after,.mw-parser-output .hlist dt:last-child:after,.mw-parser-output .hlist li:last-child:after{content:none}.mw-parser-output .hlist dd dd:first-child:before,.mw-parser-output .hlist dd dt:first-child:before,.mw-parser-output .hlist dd li:first-child:before,.mw-parser-output .hlist dt dd:first-child:before,.mw-parser-output .hlist dt dt:first-child:before,.mw-parser-output .hlist dt li:first-child:before,.mw-parser-output .hlist li dd:first-child:before,.mw-parser-output .hlist li dt:first-child:before,.mw-parser-output .hlist li li:first-child:before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child:after,.mw-parser-output .hlist dd dt:last-child:after,.mw-parser-output .hlist dd li:last-child:after,.mw-parser-output .hlist dt dd:last-child:after,.mw-parser-output .hlist dt dt:last-child:after,.mw-parser-output .hlist dt li:last-child:after,.mw-parser-output .hlist li dd:last-child:after,.mw-parser-output .hlist li dt:last-child:after,.mw-parser-output .hlist li li:last-child:after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li:before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child:before,.mw-parser-output .hlist dt ol>li:first-child:before,.mw-parser-output .hlist li ol>li:first-child:before{content:" ("counter(listitem)"\a0 "}</style><div class="hlist"> <ul><li><a href="/wiki/Special:MyLanguage/Miraheze" title="Special:MyLanguage/Miraheze">Miraheze</a><span style="display:none"><a href="/wiki/Miraheze" title="Miraheze"> </a></span></li> <li><a rel="nofollow" class="external text" href="https://www.mywikis.com/">MyWikis</a></li> <li><a rel="nofollow" class="external text" href="https://www.pro.wiki/">ProWiki</a></li> <li><a href="/wiki/Special:MyLanguage/wiki.gg" title="Special:MyLanguage/wiki.gg">wiki.gg</a><span style="display:none"><a href="/wiki/Wiki.gg" title="Wiki.gg"> </a></span></li> <li><a rel="nofollow" class="external text" href="https://wikiforge.net/">WikiForge</a></li></ul> </div> <small>This is not an authoritative list.</small> <small>Some wiki farms/hosts and/or packages may contain this extension even if they are not listed here.</small> <small>Always check with your wiki farms/hosts or bundle to confirm.</small></td></tr></tbody></table> <!-- NewPP limit report Parsed by mw‐api‐int.codfw.main‐849f99967d‐nwrqv Cached time: 20241124152044 Cache expiry: 2592000 Reduced expiry: false Complications: [vary‐revision‐sha1, show‐toc] CPU time usage: 0.982 seconds Real time usage: 1.232 seconds Preprocessor visited node count: 7739/1000000 Post‐expand include size: 122901/2097152 bytes Template argument size: 21911/2097152 bytes Highest expansion depth: 20/100 Expensive parser function count: 45/500 Unstrip recursion depth: 0/20 Unstrip post‐expand size: 24055/5000000 bytes Lua time usage: 0.382/10.000 seconds Lua memory usage: 16465208/52428800 bytes Number of Wikibase entities loaded: 0/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 906.551 1 -total 58.81% 533.126 1 Template:Extension 26.23% 237.788 71 Template:Ll 18.91% 171.389 102 Template:Pagelang 16.48% 149.435 148 Template:Translatable 12.93% 117.197 2 Template:Mbox 9.38% 85.068 1 Template:Used_by 8.43% 76.407 1 Template:Flatlist 4.87% 44.122 1 Template:OnWikimedia 4.59% 41.626 2 Template:Note --> <!-- Saved in parser cache with key mediawikiwiki:pcache:idhash:138452-0!canonical and timestamp 20241124152044 and revision id 6502188. Rendering was triggered because: api-parse --> </div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Retrieved from "<a dir="ltr" href="https://www.mediawiki.org/w/index.php?title=Extension:OAuth&oldid=6502188">https://www.mediawiki.org/w/index.php?title=Extension:OAuth&oldid=6502188</a>"</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Special:Categories" title="Special:Categories">Categories</a>: <ul><li><a href="/wiki/Category:Stable_extensions" title="Category:Stable extensions">Stable extensions</a></li><li><a href="/wiki/Category:User_identity_extensions" title="Category:User identity extensions">User identity extensions</a></li><li><a href="/wiki/Category:User_rights_extensions" title="Category:User rights extensions">User rights extensions</a></li><li><a href="/wiki/Category:API_extensions" title="Category:API extensions">API extensions</a></li><li><a href="/wiki/Category:GPL_licensed_extensions" title="Category:GPL licensed extensions">GPL licensed extensions</a></li><li><a href="/wiki/Category:Extensions_in_Wikimedia_version_control" title="Category:Extensions in Wikimedia version control">Extensions in Wikimedia version control</a></li><li><a href="/wiki/Category:Extensions_which_add_rights" title="Category:Extensions which add rights">Extensions which add rights</a></li><li><a href="/wiki/Category:AbuseFilter-builder_extensions" title="Category:AbuseFilter-builder extensions">AbuseFilter-builder extensions</a></li><li><a href="/wiki/Category:AbuseFilter-computeVariable_extensions" title="Category:AbuseFilter-computeVariable extensions">AbuseFilter-computeVariable extensions</a></li><li><a href="/wiki/Category:AbuseFilter-generateUserVars_extensions" title="Category:AbuseFilter-generateUserVars extensions">AbuseFilter-generateUserVars extensions</a></li><li><a href="/wiki/Category:ApiRsdServiceApis_extensions" title="Category:ApiRsdServiceApis extensions">ApiRsdServiceApis extensions</a></li><li><a href="/wiki/Category:BeforeCreateEchoEvent_extensions" title="Category:BeforeCreateEchoEvent extensions">BeforeCreateEchoEvent extensions</a></li><li><a href="/wiki/Category:ChangeTagCanCreate_extensions" title="Category:ChangeTagCanCreate extensions">ChangeTagCanCreate extensions</a></li><li><a href="/wiki/Category:ChangeTagsListActive_extensions" title="Category:ChangeTagsListActive extensions">ChangeTagsListActive extensions</a></li><li><a href="/wiki/Category:GetPreferences_extensions" title="Category:GetPreferences extensions">GetPreferences extensions</a></li><li><a href="/wiki/Category:ListDefinedTags_extensions" title="Category:ListDefinedTags extensions">ListDefinedTags extensions</a></li><li><a href="/wiki/Category:LoadExtensionSchemaUpdates_extensions" title="Category:LoadExtensionSchemaUpdates extensions">LoadExtensionSchemaUpdates extensions</a></li><li><a href="/wiki/Category:LoginFormValidErrorMessages_extensions" title="Category:LoginFormValidErrorMessages extensions">LoginFormValidErrorMessages extensions</a></li><li><a href="/wiki/Category:MergeAccountFromTo_extensions" title="Category:MergeAccountFromTo extensions">MergeAccountFromTo extensions</a></li><li><a href="/wiki/Category:MessagesPreLoad_extensions" title="Category:MessagesPreLoad extensions">MessagesPreLoad extensions</a></li><li><a href="/wiki/Category:SetupAfterCache_extensions" title="Category:SetupAfterCache extensions">SetupAfterCache extensions</a></li><li><a href="/wiki/Category:SpecialPageAfterExecute_extensions" title="Category:SpecialPageAfterExecute extensions">SpecialPageAfterExecute extensions</a></li><li><a href="/wiki/Category:SpecialPageBeforeFormDisplay_extensions" title="Category:SpecialPageBeforeFormDisplay extensions">SpecialPageBeforeFormDisplay extensions</a></li><li><a href="/wiki/Category:SpecialPage_initList_extensions" title="Category:SpecialPage initList extensions">SpecialPage initList extensions</a></li><li><a href="/wiki/Category:TestCanonicalRedirect_extensions" title="Category:TestCanonicalRedirect extensions">TestCanonicalRedirect extensions</a></li><li><a href="/wiki/Category:All_extensions" title="Category:All extensions">All extensions</a></li><li><a href="/wiki/Category:Extensions_requiring_Composer_with_git" title="Category:Extensions requiring Composer with git">Extensions requiring Composer with git</a></li><li><a href="/wiki/Category:Extensions_used_on_Wikimedia" title="Category:Extensions used on Wikimedia">Extensions used on Wikimedia</a></li><li><a href="/wiki/Category:Extensions_included_in_Miraheze" title="Category:Extensions included in Miraheze">Extensions included in Miraheze</a></li><li><a href="/wiki/Category:Extensions_included_in_MyWikis" title="Category:Extensions included in MyWikis">Extensions included in MyWikis</a></li><li><a href="/wiki/Category:Extensions_included_in_ProWiki" title="Category:Extensions included in ProWiki">Extensions included in ProWiki</a></li><li><a href="/wiki/Category:Extensions_included_in_wiki.gg" title="Category:Extensions included in wiki.gg">Extensions included in wiki.gg</a></li><li><a href="/wiki/Category:Extensions_included_in_WikiForge" title="Category:Extensions included in WikiForge">Extensions included in WikiForge</a></li></ul></div><div id="mw-hidden-catlinks" class="mw-hidden-catlinks mw-hidden-cats-hidden">Hidden categories: <ul><li><a href="/wiki/Category:Extensions_without_an_image" title="Category:Extensions without an image">Extensions without an image</a></li><li><a href="/wiki/Category:Extensions_with_release_branches_compatibility_policy" title="Category:Extensions with release branches compatibility policy">Extensions with release branches compatibility policy</a></li></ul></div></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> This page was last edited on 3 May 2024, at 17:54.</li> <li id="footer-info-copyright">Text is available under the <a rel="nofollow" class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-ShareAlike License</a>; additional terms may apply. Text in <a class="external text" href="https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents">the Help: namespace</a> is available under the <a rel="nofollow" class="external text" href="https://creativecommons.org/publicdomain/zero/1.0/">Creative Commons CC0 License</a>. By using this site, you agree to the <a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use">Terms of Use</a> and <a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Privacy Policy</a>.</li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Privacy policy</a></li> <li id="footer-places-about"><a href="/wiki/Project:About">About mediawiki.org</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Project:General_disclaimer">Disclaimers</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://www.mediawiki.org/wiki/Special:MyLanguage/Code_of_Conduct">Code of Conduct</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Developers</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/www.mediawiki.org">Statistics</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Cookie statement</a></li> <li id="footer-places-mobileview"><a href="//m.mediawiki.org/w/index.php?title=Extension:OAuth&mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Mobile view</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/w/resources/assets/poweredby_mediawiki.svg" alt="Powered by MediaWiki" width="88" height="31" loading="lazy"></a></li> </ul> </footer> </div> </div> </div> <div class="vector-settings" id="p-dock-bottom"> <ul></ul> </div><script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.codfw.main-f69cdc8f6-thrbb","wgBackendResponseTime":124,"wgPageParseReport":{"limitreport":{"cputime":"0.982","walltime":"1.232","ppvisitednodes":{"value":7739,"limit":1000000},"postexpandincludesize":{"value":122901,"limit":2097152},"templateargumentsize":{"value":21911,"limit":2097152},"expansiondepth":{"value":20,"limit":100},"expensivefunctioncount":{"value":45,"limit":500},"unstrip-depth":{"value":0,"limit":20},"unstrip-size":{"value":24055,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 906.551 1 -total"," 58.81% 533.126 1 Template:Extension"," 26.23% 237.788 71 Template:Ll"," 18.91% 171.389 102 Template:Pagelang"," 16.48% 149.435 148 Template:Translatable"," 12.93% 117.197 2 Template:Mbox"," 9.38% 85.068 1 Template:Used_by"," 8.43% 76.407 1 Template:Flatlist"," 4.87% 44.122 1 Template:OnWikimedia"," 4.59% 41.626 2 Template:Note"]},"scribunto":{"limitreport-timeusage":{"value":"0.382","limit":"10.000"},"limitreport-memusage":{"value":16465208,"limit":52428800}},"cachereport":{"origin":"mw-api-int.codfw.main-849f99967d-nwrqv","timestamp":"20241124152044","ttl":2592000,"transientcontent":false}}});});</script> </body> </html>