hungdev/react-native-instagram-login

returns status 403 when using code to fetch access token

Robogram opened this issue ยท 16 comments

returns status 403 when using code to fetch access token

specifically displays this

{"config": {"adapter": [Function xhrAdapter], "baseURL": "https://api.instagram.com/oauth/access_token", "data": {"_parts": [Array]}, "headers": {"Accept": "application/json, text/plain, /"}, "maxContentLength": -1, "method": "post", "timeout": 0, "transformRequest": [[Function transformRequest]], "transformResponse": [[Function transformResponse]], "url": "/", "validateStatus": [Function validateStatus], "xsrfCookieName": "XSRF-TOKEN", "xsrfHeaderName": "X-XSRF-TOKEN"}, "data": "

    <title>
              Page Not Found &bull; Instagram
            </title>

    
    <meta name=\"robots\" content=\"noimageindex, noarchive\">
    <meta name=\"apple-mobile-web-app-status-bar-style\" content=\"default\">
    <meta name=\"mobile-web-app-capable\" content=\"yes\">
    <meta name=\"theme-color\" content=\"#ffffff\">
    
        <meta name=\"theme-color\" content=\"#000000\" media=\"(prefers-color-scheme: dark)\">
    
    <meta id=\"viewport\" name=\"viewport\" content=\"width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, viewport-fit=cover\">
    <link rel=\"manifest\" href=\"/data/manifest.json\">

    
    
    

    <script type=\"text/javascript\">
    (function() {

var docElement = document.documentElement;
var classRE = new RegExp('(^|\\s)no-js(\\s|$)');
var className = docElement.className;
docElement.className = className.replace(classRE, '$1js$2');
})();
</script>
<script type="text/javascript">
(function() {
if ('PerformanceObserver' in window && 'PerformancePaintTiming' in window) {
window.__bufferedPerformance = [];
var ob = new PerformanceObserver(function(e) {
window.__bufferedPerformance.push.apply(window.__bufferedPerformance,e.getEntries());
});
ob.observe({entryTypes:['paint']});
}

window.__bufferedErrors = [];
window.onerror = function(message, url, line, column, error) {
window.__bufferedErrors.push({
message: message,
url: url,
line: line,
column: column,
error: error
});
return false;
};
window.__initialData = {
pending: true,
waiting: []
};
function asyncFetchSharedData(extra) {
var sharedDataReq = new XMLHttpRequest();
sharedDataReq.onreadystatechange = function() {
if (sharedDataReq.readyState === 4) {
if(sharedDataReq.status === 200){
var sharedData = JSON.parse(sharedDataReq.responseText);
window.__initialDataLoaded(sharedData, extra);
}
}
}
sharedDataReq.open('GET', '/data/shared_data/', true);
sharedDataReq.send(null);
}
function notifyLoaded(item, data) {
item.pending = false;
item.data = data;
for (var i = 0;i < item.waiting.length; ++i) {
item.waiting[i].resolve(item.data);
}
item.waiting = [];
}
function notifyError(item, msg) {
item.pending = false;
item.error = new Error(msg);
for (var i = 0;i < item.waiting.length; ++i) {
item.waiting[i].reject(item.error);
}
item.waiting = [];
}
window.__initialDataLoaded = function(initialData, extraData) {
if (extraData) {
for (var key in extraData) {
initialData[key] = extraData[key];
}
}
notifyLoaded(window.__initialData, initialData);
};
window.__initialDataError = function(msg) {
notifyError(window.__initialData, msg);
};
window.__additionalData = {};
window.__pendingAdditionalData = function(paths) {
for (var i = 0;i < paths.length; ++i) {
window.__additionalData[paths[i]] = {
pending: true,
waiting: []
};
}
};
window.__additionalDataLoaded = function(path, data) {
if (path in window.__additionalData) {
notifyLoaded(window.__additionalData[path], data);
} else {
console.error('Unexpected additional data loaded "' + path + '"');
}
};
window.__additionalDataError = function(path, msg) {
if (path in window.__additionalData) {
notifyError(window.__additionalData[path], msg);
} else {
console.error('Unexpected additional data encountered an error "' + path + '": ' + msg);
}
};

})();
</script><script type="text/javascript">

/*
Copyright 2018 Google Inc. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

 http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

(function(){function g(a,c){b||(b=a,f=c,h.forEach(function(a){removeEventListener(a,l,e)}),m())}function m(){b&&f&&0<d.length&&(d.forEach(function(a){a(b,f)}),d=[])}function n(a,c){function k(){g(a,c);d()}function b(){d()}function d(){removeEventListener("pointerup",k,e);removeEventListener("pointercancel",b,e)}addEventListener("pointerup",k,e);addEventListener("pointercancel",b,e)}function l(a){if(a.cancelable){var c=performance.now(),b=a.timeStamp;b>c&&(c=+new Date);c-=b;"pointerdown"==a.type?n(c,
a):g(c,a)}}var e={passive:!0,capture:!0},h=["click","mousedown","keydown","touchstart","pointerdown"],b,f,d=[];h.forEach(function(a){addEventListener(a,l,e)});window.perfMetrics=window.perfMetrics||{};window.perfMetrics.onFirstInputDelay=function(a){d.push(a);m()}})();
</script>

                <!-- Icons for add to home screen flow  -->
                <link rel=\"apple-touch-icon-precomposed\" sizes=\"76x76\" href=\"/static/images/ico/apple-touch-icon-76x76-precomposed-refresh.png/c2433a4e3bc6.png\">
                <link rel=\"apple-touch-icon-precomposed\" sizes=\"120x120\" href=\"/static/images/ico/apple-touch-icon-120x120-precomposed-refresh.png/073826ab4e03.png\">
                <link rel=\"apple-touch-icon-precomposed\" sizes=\"152x152\" href=\"/static/images/ico/apple-touch-icon-152x152-precomposed-refresh.png/a2c0c3c558c0.png\">
                <link rel=\"apple-touch-icon-precomposed\" sizes=\"167x167\" href=\"/static/images/ico/apple-touch-icon-167x167-precomposed-refresh.png/7c0942b9f53c.png\">
                <link rel=\"apple-touch-icon-precomposed\" sizes=\"180x180\" href=\"/static/images/ico/apple-touch-icon-180x180-precomposed-refresh.png/216ba3a34992.png\">
                <link rel=\"apple-touch-icon\" sizes=\"76x76\" href=\"/static/images/ico/apple-touch-icon-76x76-a2h-refresh.png/0c8b5dfc327e.png\">
                <link rel=\"apple-touch-icon\" sizes=\"120x120\" href=\"/static/images/ico/apple-touch-icon-120x120-a2h-refresh.png/d17a02b9cbbc.png\">
                <link rel=\"apple-touch-icon\" sizes=\"152x152\" href=\"/static/images/ico/apple-touch-icon-152x152-a2h-refresh.png/05d118183ea9.png\">
                <link rel=\"apple-touch-icon\" sizes=\"167x167\" href=\"/static/images/ico/apple-touch-icon-167x167-a2h-refresh.png/8be4c958c827.png\">
                <link rel=\"apple-touch-icon\" sizes=\"180x180\" href=\"/static/images/ico/apple-touch-icon-180x180-a2h-refresh.png/e7add10b677a.png\">
            
            
                
                    <link rel=\"icon\" sizes=\"192x192\" href=\"/static/images/ico/favicon-refresh-192.png/7dc5a797e88b.png\">
                
            
        
        
                
                    <link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/static/images/ico/favicon-refresh.ico/eb03b7b3286b.ico\">
                
            
        
        

    <style type=\"text/css\">/* @generated 
  • DO NOT CHANGE THIS FILE. Instead, modify the non-build version of "main.css"

  • then run "yolo css"
    */
    body{-webkit-font-smoothing:antialiased;background-color:#fafafa;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;margin:0}.client-root{font-size:14px}a{text-decoration:none}.-cx-PRIVATE-Page__body__,.-cx-PRIVATE-Page__main__,.-cx-PRIVATE-Page__root__{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.-cx-PRIVATE-Page__root__{height:100vh}.-cx-PRIVATE-Page__body__,.-cx-PRIVATE-Page__main__{-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto}.-cx-PRIVATE-Page__main__{margin-top:137px;position:relative}@media screen and (max-width:990px){.-cx-PRIVATE-Page__main__{display:block;margin-top:0}}.-cx-PRIVATE-NavBar__root__{background-color:#fff;border-bottom:1px solid #efefef;height:77px;position:fixed;top:0;width:100%;z-index:100}.-cx-PRIVATE-NavBar__profilePic__{display:none}.-cx-PRIVATE-NavBar__username__{color:#003569;display:inline!important;float:right;font-weight:400;margin-right:2px;margin-top:12px}.-cx-PRIVATE-NavBar__signIn__{display:inline-block;float:right;margin-right:2px;margin-top:12px}.-cx-PRIVATE-NavBar__signInText__{color:#003569;font-weight:400}.-cx-PRIVATE-NavBar__logo__{background-image:url(/static/images/branding/logoWhiteoutLockup.png/3a62b1a95da3.png);background-size:100%;height:35px;left:16px;position:absolute;text-indent:-9999em;top:6px;width:176px}.-cx-PRIVATE-NavBar__logo__ a{display:block;height:100%;width:100%}@media screen and (-webkit-min-device-pixel-ratio:1.5),screen and (min-resolution:1.5dppx){.-cx-PRIVATE-NavBar__logo__{background-image:url(/static/images/branding/logoWhiteoutLockup@2x.png/43608c988939.png)}}.-cx-PRIVATE-NavBar__logoGroup__{left:16px;position:absolute;top:6px}.-cx-PRIVATE-NavBar__logoGroup__ .-cx-PRIVATE-NavBar__logo__{position:static}.-cx-PRIVATE-NavBar__wrapper__{margin:0 auto;max-width:1026px;padding:0 16px;position:relative}.-cx-PRIVATE-NavBar__topBarActions__,.-cx-PRIVATE-SidebarLayout__content__ li{list-style:none}.-cx-PRIVATE-NavBar__dropdown__,.-cx-PRIVATE-NavBar__topBarLeft__,.-cx-PRIVATE-SidebarLayout__content__ .separator,.-cx-PRIVATE-SidebarLayout__content__ .subtitle{display:none}.-cx-PRIVATE-SidebarLayout__content__{border-right:1px solid #efefef;height:100%;width:220px}.-cx-PRIVATE-SidebarLayout__content__ ul{margin:0;padding:0}@media screen and (max-width:990px){.-cx-PRIVATE-SidebarLayout__content__{margin:0 px;border:0;width:100%}.-cx-PRIVATE-SidebarLayout__content__ ul{display:none}}.-cx-PRIVATE-SidebarLayout__root__{-webkit-box-sizing:border-box;box-sizing:border-box;height:100%;pointer-events:none;position:absolute;width:100%;z-index:1}@media screen and (max-width:990px){.-cx-PRIVATE-SidebarLayout__root__{height:auto;padding-bottom:0;padding-top:78px;position:static}}.-cx-PRIVATE-SidebarLayout__contentWrapper__,.-cx-PRIVATE-SidebarLayout__navWrapper__{-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;margin:0 auto;position:relative;width:992px}@media screen and (min-width:991px){.-cx-PRIVATE-SidebarLayout__navWrapper__{height:100%}}@media screen and (max-width:990px){.-cx-PRIVATE-SidebarLayout__navWrapper__{-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;height:auto;min-height:0;padding:0;width:100%}}.-cx-PRIVATE-SidebarLayout__nav__{float:left;height:100%;padding-right:0;pointer-events:initial;width:256px}@media screen and (max-width:990px){.-cx-PRIVATE-SidebarLayout__nav__{float:none;display:block;margin:0!important;background:0 0;border:0;width:100%}}.-cx-PRIVATE-SidebarLayout__contentWrapper__{background-color:#fff;border:1px solid #efefef;-webkit-box-sizing:border-box;box-sizing:border-box;padding:0 16px 20px}@media screen and (min-width:991px){.-cx-PRIVATE-SidebarLayout__contentWrapper__{border:1px solid #efefef;border-radius:3px}}@media screen and (max-width:990px){.-cx-PRIVATE-SidebarLayout__contentWrapper__{width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.-cx-PRIVATE-SidebarLayout__pageContent__ .-cx-PRIVATE-SidebarLayout__contentWrapper__{padding:0 10px}}.-cx-PRIVATE-SidebarLayout__pageContent__{color:#262626;margin-left:205px;padding:30px 50px}@media screen and (max-width:990px){.-cx-PRIVATE-SidebarLayout__pageContent__{margin-left:0;margin-right:0;padding:20px 0}}.-cx-PRIVATE-SidebarLayout__pageContent__>:first-child{margin-top:0}.-cx-PRIVATE-SidebarLayout__pageContent__ a{color:#003569}.-cx-PRIVATE-SidebarLayout__pageContent__ h1{font-size:32px;font-weight:400;margin-bottom:20px;margin-top:28px}.-cx-PRIVATE-SidebarLayout__pageContent__ h2{font-size:24px;font-weight:400;margin-bottom:12px;margin-top:28px}.-cx-PRIVATE-SidebarLayout__pageContent__ h3{font-weight:600;margin-bottom:12px;margin-top:28px}.-cx-PRIVATE-SidebarLayout__pageContent__ li{padding-left:8px}.-cx-PRIVATE-SidebarLayout__pageContent__ li:not(:first-child){margin-top:8px}.-cx-PRIVATE-SidebarLayout__pageContent__ pre{white-space:pre-wrap}.-cx-PRIVATE-Navigation__header__{color:#999;font-size:16px;font-weight:initial;margin:0;padding:16px;text-transform:uppercase}@media screen and (max-width:990px){.-cx-PRIVATE-Navigation__header__:first-child{display:block}.-cx-PRIVATE-Navigation__header__:not(:first-child){display:none}.-cx-PRIVATE-Navigation__header__ i{float:left;width:22px;height:18px;margin-right:8px;margin-left:10px;background:url(/static/images/glyphs/disclosure-down@2x.png/9ae8409fbb3a.png) no-repeat center;background-size:14px 14px}.-cx-PRIVATE-SidebarLayout__content__.active .-cx-PRIVATE-Navigation__header__ i{-webkit-transform:rotate(180deg);transform:rotate(180deg)}}.-cx-PRIVATE-Navigation__navLink__,.-cx-PRIVATE-Navigation__navLink__:active,.-cx-PRIVATE-Navigation__navLink__:hover,.-cx-PRIVATE-Navigation__navLink__:visited{border-left:2px solid transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:#262626;font-size:16px;display:block;padding:16px 16px 16px 30px;width:100%}.-cx-PRIVATE-Navigation__navLink__:hover{border-left-color:#dbdbdb}.-cx-PRIVATE-Navigation__active__ .-cx-PRIVATE-Navigation__navLink__{border-left-color:#262626;font-weight:600}.-cx-PRIVATE-Footer__root__{font-size:12px;height:77px}.-cx-PRIVATE-Footer__copyright__{color:#262626;display:inline-block;float:right;font-weight:600;margin-top:20px;text-transform:uppercase}.-cx-PRIVATE-Footer__nav__{display:inline-block}@media screen and (max-width:990px){.-cx-PRIVATE-Footer__copyright__{text-align:center;width:100%}}.-cx-PRIVATE-Footer__navItems__{margin:20px 0;padding:0;text-align:center}.-cx-PRIVATE-Footer__navItems__ li{display:inline-block;list-style:none}.-cx-PRIVATE-Footer__navItems__ li:not(:first-child){margin-left:15px}.-cx-PRIVATE-Footer__navItems__ a,.-cx-PRIVATE-Footer__navItems__ a:active,.-cx-PRIVATE-Footer__navItems__ a:focus,.-cx-PRIVATE-Footer__navItems__ a:hover,.-cx-PRIVATE-Footer__navItems__ a:visited{color:#003569;font-weight:600;text-transform:uppercase}.-cx-PRIVATE-Footer__wrapper__{margin-left:auto;margin-right:auto;max-width:1026px;padding:0 20px}.-cx-PRIVATE-ErrorPage__errorContainer__{text-align:center}@media (max-width:990px){.-cx-PRIVATE-ErrorPage__errorContainer__{padding:100px 40px 0}}.-cx-PRIVATE-ErrorPage__errorContainer__ a,.-cx-PRIVATE-ErrorPage__errorContainer__ a:visited{color:#003569}.-cx-PRIVATE-Linkshim__followLink__{background-color:#fff;color:#3897f0;border:1px solid #3897f0;border-radius:3px;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;padding:8px;font:inherit;font-weight:700;width:90%}@media (min-width:736px){.-cx-PRIVATE-Linkshim__followLink__{width:10%}}.-cx-PRIVATE-Linkshim__followLink__:active{opacity:.5}.-cx-PRIVATE-Linkshim__followLink__:focus{color:#1372cc;border:1px solid #1372cc}.-cx-PRIVATE-GatedContentPage__userAvatarContainer__{height:70px;text-align:center}.-cx-PRIVATE-GatedContentPage__userAvatar__{border-radius:50%;height:100%;width:auto}</style>

    <script type=\"text/javascript\" src=\"/static/scripts/jquery.js/a4e77326039e.js\" crossorigin=\"anonymous\"></script> <script type=\"text/javascript\" src=\"/static/scripts/bluebar.js/203583927eba.js\" crossorigin=\"anonymous\"></script>
        <div class=\"root -cx-PRIVATE-Page__root -cx-PRIVATE-Page__root__\">
            
                <div class=\"page -cx-PRIVATE-Page__body -cx-PRIVATE-Page__body__\">
                    
                        
                            <header class=\"top-bar top-bar-new -cx-PRIVATE-NavBar__root -cx-PRIVATE-NavBar__root__\">
<div class=\"top-bar-wrapper -cx-PRIVATE-NavBar__wrapper -cx-PRIVATE-NavBar__wrapper__\">
    <div class=\"logo -cx-PRIVATE-NavBar__logo -cx-PRIVATE-NavBar__logo__\"><a href=\"/\">Instagram</a></div>

    <div class=\"top-bar-left -cx-PRIVATE-NavBar__topBarLeft -cx-PRIVATE-NavBar__topBarLeft__\">
        <ul class=\"top-bar-actions\">
            <li>
                <a class=\"top-bar-home\" href=\"/\" label=Home><i></i></a>
            </li>
        </ul>
    </div>

    
        <div class=\"top-bar-right account-state\" id=\"top_bar_right\">
            <ul class=\"top-bar-actions -cx-PRIVATE-NavBar__topBarActions -cx-PRIVATE-NavBar__topBarActions__\">
                
                
                <li id=\"link_profile\" class=\"link-profile has-dropdown -cx-PRIVATE-NavBar__profile -cx-PRIVATE-NavBar__profile__\">
                    <a href=\"/georgegui7/\">
                        <strong class=\"-cx-PRIVATE-NavBar__username -cx-PRIVATE-NavBar__username__\">georgegui7</strong>
                    </a>

                </li>
                
            </ul>
        </div>
    
</div>
                    <div class=\"main -cx-PRIVATE-Page__main -cx-PRIVATE-Page__main__\">
                        
<div class=\"error-container -cx-PRIVATE-ErrorPage__errorContainer -cx-PRIVATE-ErrorPage__errorContainer__\">


<h2>Error</h2>

    <p>Logged-in use not supported</p>


</div>

                    </div> <!-- .main -->
                    

                </div> <!-- .page -->

                
                <footer class=\"page-footer -cx-PRIVATE-Footer__root -cx-PRIVATE-Footer__root__\" role=\"contentinfo\">
                    <div class=\"wrapper -cx-PRIVATE-Footer__wrapper -cx-PRIVATE-Footer__wrapper__\">
                        <nav class=\"-cx-PRIVATE-Footer__nav -cx-PRIVATE-Footer__nav__\">
                            <ul class=\"-cx-PRIVATE-Footer__navItems -cx-PRIVATE-Footer__navItems__\">
                                <li><a href=\"/about/us/\">About us</a></li>
                                <li><a href=\"https://help.instagram.com/\">Support</a></li>
                                <li><a href=\"https://about.instagram.com/blog/\">Press</a></li>
                                <li><a href=\"\">API</a></li>
                                <li><a href=\"https://about.instagram.com/about-us/careers\">Jobs</a></li>
                                <li><a href=\"/legal/privacy/\">Privacy</a></li>
                                <li><a href=\"/legal/terms/\">
                                  
                                      Terms
                                  
                                </a></li>
                                
                            </ul>
                        </nav>

                        <p class=\"copyright -cx-PRIVATE-Footer__copyright -cx-PRIVATE-Footer__copyright__\">&copy; 2023 Instagram</p>
                    </div>
                </footer>
                
            
            <div id=\"reactModalMountPoint\"></div>
        </div> <!-- .root -->
    
    


    
        

        
    

    <script type=\"text/javascript\">

(function(){
function normalizeError(err) {
var errorInfo = err.error || {};
var getConfigProp = function(propName, defaultValueIfNotTruthy) {
var propValue = window._sharedData && window._sharedData[propName];
return propValue ? propValue : defaultValueIfNotTruthy;
};
var windowUrl = window.location.href;
var errUrl = err.url || windowUrl;
return {
line: err.line || errorInfo.message || 0,
column: err.column || 0,
name: 'InitError',
message: err.message || errorInfo.message || '',
script: errorInfo.script || '',
stack: errorInfo.stackTrace || errorInfo.stack || '',
timestamp: Date.now(),
ref: windowUrl.indexOf('direct') >= 0 ? 'direct' : windowUrl,
deployment_stage: getConfigProp('deployment_stage', ''),
frontend_env: getConfigProp('frontend_env', 'prod'),
rollout_hash: getConfigProp('rollout_hash', ''),
is_prerelease: window.PRERELEASE || false,
bundle_variant: getConfigProp('bundle_variant', null),
request_url: errUrl.indexOf('direct') >= 0 ? 'direct' : errUrl,
response_status_code: errorInfo.statusCode || 0
}
}
window.addEventListener('load', function(){
if (window.__bufferedErrors && window.__bufferedErrors.length) {
if (window.caches && window.caches.keys && window.caches.delete) {
window.caches.keys().then(function(keys) {
keys.forEach(function(key) {
window.caches.delete(key)
})
})
}
window.__bufferedErrors.map(function(error) {
return normalizeError(error)
}).forEach(function(normalizedError) {
var request = new XMLHttpRequest();
request.open('POST', '/client_error/', true);
request.setRequestHeader('Content-Type', 'application/json; charset=utf-8');
request.send(JSON.stringify(normalizedError));
})
}
})
}());
</script>

", "headers": {"access-control-expose-headers": "X-IG-Set-WWW-Claim", "alt-svc": "h3=\":443\"; ma=86400", "cache-control": "private, no-cache, no-store, must-revalidate", "content-language": "en", "content-length": "21671", "content-security-policy": "report-uri https://www.instagram.com/security/csp_report/; default-src 'self' https://www.instagram.com; img-src data: blob: https://*.fbcdn.net https://*.instagram.com https://*.cdninstagram.com https://*.facebook.com https://*.fbsbx.com https://*.giphy.com; font-src data: https://*.fbcdn.net https://*.instagram.com https://*.cdninstagram.com; media-src 'self' blob: https://www.instagram.com https://*.cdninstagram.com https://*.fbcdn.net; manifest-src 'self' https://www.instagram.com; script-src 'self' https://instagram.com https://www.instagram.com https://*.www.instagram.com https://*.cdninstagram.com wss://www.instagram.com https://*.facebook.com https://*.fbcdn.net https://*.facebook.net 'unsafe-inline' 'unsafe-eval' blob:; style-src 'self' https://*.www.instagram.com https://www.instagram.com 'unsafe-inline'; connect-src 'self' https://instagram.com https://www.instagram.com https://*.www.instagram.com https://graph.instagram.com https://*.graph.instagram.com https://i.instagram.com/graphql_www https://graphql.instagram.com https://*.cdninstagram.com https://api.instagram.com https://i.instagram.com https://*.i.instagram.com https://*.od.instagram.com wss://www.instagram.com wss://edge-chat.instagram.com https://*.facebook.com https://*.fbcdn.net https://*.facebook.net chrome-extension://boadgeojelhgndaghljhdicfkmllpafd blob:; worker-src 'self' blob: https://www.instagram.com; frame-src 'self' https://instagram.com https://www.instagram.com https://*.instagram.com https://staticxx.facebook.com https://www.facebook.com https://web.facebook.com https://connect.facebook.net https://m.facebook.com https://*.fbsbx.com; object-src 'none'; upgrade-insecure-requests", "content-type": "text/html; charset=utf-8", "cross-origin-embedder-policy-report-only": "require-corp;report-to=\"coep\"", "cross-origin-opener-policy": "same-origin-allow-popups;report-to=\"coop\"", "date": "Fri, 05 May 2023 20:41:03 GMT", "expires": "Sat, 01 Jan 2000 00:00:00 GMT", "origin-trial": "AuqWincgAuXeuu3KypEMnrrFEJHySaesyJS3EaIH40zvafzrU0Irhb7+5QwZpOqMZrPTjgvFl7Z5jJgy1dNAcQMAAAB6eyJvcmlnaW4iOiJodHRwczovL2luc3RhZ3JhbS5jb206NDQzIiwiZmVhdHVyZSI6IkNyb3NzT3JpZ2luT3BlbmVyUG9saWN5UmVwb3J0aW5nIiwiZXhwaXJ5IjoxNjEzNDExNjYyLCJpc1N1YmRvbWFpbiI6dHJ1ZX0=", "pragma": "no-cache", "report-to": "{\"group\": \"coep\", \"max_age\": 86400, \"endpoints\": [{\"url\": \"/security/coep_report/\"}]},{\"group\": \"coop\", \"max_age\": 86400, \"endpoints\": [{\"url\": \"/security/coop_report/\"}]}", "retry-after": "1", "set-cookie": ["rur=\"EAG\\05458810415039\\0541714855263:01f73a7d7e55f3fe7246a46a025f785c076bab72b906768dca44f5ea3c40d9973056967a\"; Domain=.instagram.com; HttpOnly; Path=/; SameSite=Lax; Secure"], "strict-transport-security": "max-age=31536000", "vary": "Accept-Language, Cookie", "x-aed": "86", "x-content-type-options": "nosniff", "x-fb-trip-id": "1679558926", "x-frame-options": "SAMEORIGIN", "x-ig-cache-control": "no-cache", "x-ig-origin-region": "eag", "x-ig-peak-time": "0", "x-ig-push-state": "c2", "x-ig-request-elapsed-time-ms": "89", "x-xss-protection": "0"}, "request": {"DONE": 4, "HEADERS_RECEIVED": 2, "LOADING": 3, "OPENED": 1, "UNSENT": 0, "_aborted": false, "_cachedResponse": undefined, "_hasError": false, "_headers": {"accept": "application/json, text/plain, */*"}, "_incrementalEvents": false, "_lowerCaseResponseHeaders": {"access-control-expose-headers": "X-IG-Set-WWW-Claim", "alt-svc": "h3=\":443\"; ma=86400", "cache-control": "private, no-cache, no-store, must-revalidate", "content-language": "en", "content-length": "21671", "content-security-policy": "report-uri https://www.instagram.com/security/csp_report/; default-src 'self' https://www.instagram.com; img-src data: blob: https://*.fbcdn.net https://*.instagram.com https://*.cdninstagram.com https://*.facebook.com https://*.fbsbx.com https://*.giphy.com; font-src data: https://*.fbcdn.net https://*.instagram.com https://*.cdninstagram.com; media-src 'self' blob: https://www.instagram.com https://*.cdninstagram.com https://*.fbcdn.net; manifest-src 'self' https://www.instagram.com; script-src 'self' https://instagram.com https://www.instagram.com https://*.www.instagram.com https://*.cdninstagram.com wss://www.instagram.com https://*.facebook.com https://*.fbcdn.net https://*.facebook.net 'unsafe-inline' 'unsafe-eval' blob:; style-src 'self' https://*.www.instagram.com https://www.instagram.com 'unsafe-inline'; connect-src 'self' https://instagram.com https://www.instagram.com https://*.www.instagram.com https://graph.instagram.com https://*.graph.instagram.com https://i.instagram.com/graphql_www https://graphql.instagram.com https://*.cdninstagram.com https://api.instagram.com https://i.instagram.com https://*.i.instagram.com https://*.od.instagram.com wss://www.instagram.com wss://edge-chat.instagram.com https://*.facebook.com https://*.fbcdn.net https://*.facebook.net chrome-extension://boadgeojelhgndaghljhdicfkmllpafd blob:; worker-src 'self' blob: https://www.instagram.com; frame-src 'self' https://instagram.com https://www.instagram.com https://*.instagram.com https://staticxx.facebook.com https://www.facebook.com https://web.facebook.com https://connect.facebook.net https://m.facebook.com https://*.fbsbx.com; object-src 'none'; upgrade-insecure-requests", "content-type": "text/html; charset=utf-8", "cross-origin-embedder-policy-report-only": "require-corp;report-to=\"coep\"", "cross-origin-opener-policy": "same-origin-allow-popups;report-to=\"coop\"", "date": "Fri, 05 May 2023 20:41:03 GMT", "expires": "Sat, 01 Jan 2000 00:00:00 GMT", "origin-trial": "AuqWincgAuXeuu3KypEMnrrFEJHySaesyJS3EaIH40zvafzrU0Irhb7+5QwZpOqMZrPTjgvFl7Z5jJgy1dNAcQMAAAB6eyJvcmlnaW4iOiJodHRwczovL2luc3RhZ3JhbS5jb206NDQzIiwiZmVhdHVyZSI6IkNyb3NzT3JpZ2luT3BlbmVyUG9saWN5UmVwb3J0aW5nIiwiZXhwaXJ5IjoxNjEzNDExNjYyLCJpc1N1YmRvbWFpbiI6dHJ1ZX0=", "pragma": "no-cache", "report-to": "{\"group\": \"coep\", \"max_age\": 86400, \"endpoints\": [{\"url\": \"/security/coep_report/\"}]},{\"group\": \"coop\", \"max_age\": 86400, \"endpoints\": [{\"url\": \"/security/coop_report/\"}]}", "retry-after": "1", "set-cookie": "rur=\"EAG\\05458810415039\\0541714855263:01f73a7d7e55f3fe7246a46a025f785c076bab72b906768dca44f5ea3c40d9973056967a\"; Domain=.instagram.com; HttpOnly; Path=/; SameSite=Lax; Secure", "strict-transport-security": "max-age=31536000", "vary": "Accept-Language, Cookie", "x-aed": "86", "x-content-type-options": "nosniff", "x-fb-trip-id": "1679558926", "x-frame-options": "SAMEORIGIN", "x-ig-cache-control": "no-cache", "x-ig-origin-region": "eag", "x-ig-peak-time": "0", "x-ig-push-state": "c2", "x-ig-request-elapsed-time-ms": "89", "x-xss-protection": "0"}, "_method": "POST", "_perfKey": "network_XMLHttpRequest_https://api.instagram.com/oauth/access_token/", "_performanceLogger": {"_closed": false, "_extras": [Object], "_pointExtras": [Object], "_points": [Object], "_timespans": [Object]}, "_requestId": null, "_response": "
    <title>
              Page Not Found &bull; Instagram
            </title>

    
    <meta name=\"robots\" content=\"noimageindex, noarchive\">
    <meta name=\"apple-mobile-web-app-status-bar-style\" content=\"default\">
    <meta name=\"mobile-web-app-capable\" content=\"yes\">
    <meta name=\"theme-color\" content=\"#ffffff\">
    
        <meta name=\"theme-color\" content=\"#000000\" media=\"(prefers-color-scheme: dark)\">
    
    <meta id=\"viewport\" name=\"viewport\" content=\"width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, viewport-fit=cover\">
    <link rel=\"manifest\" href=\"/data/manifest.json\">

    
    
    

    <script type=\"text/javascript\">
    (function() {

var docElement = document.documentElement;
var classRE = new RegExp('(^|\\s)no-js(\\s|$)');
var className = docElement.className;
docElement.className = className.replace(classRE, '$1js$2');
})();
</script>
<script type="text/javascript">
(function() {
if ('PerformanceObserver' in window && 'PerformancePaintTiming' in window) {
window.__bufferedPerformance = [];
var ob = new PerformanceObserver(function(e) {
window.__bufferedPerformance.push.apply(window.__bufferedPerformance,e.getEntries());
});
ob.observe({entryTypes:['paint']});
}

window.__bufferedErrors = [];
window.onerror = function(message, url, line, column, error) {
window.__bufferedErrors.push({
message: message,
url: url,
line: line,
column: column,
error: error
});
return false;
};
window.__initialData = {
pending: true,
waiting: []
};
function asyncFetchSharedData(extra) {
var sharedDataReq = new XMLHttpRequest();
sharedDataReq.onreadystatechange = function() {
if (sharedDataReq.readyState === 4) {
if(sharedDataReq.status === 200){
var sharedData = JSON.parse(sharedDataReq.responseText);
window.__initialDataLoaded(sharedData, extra);
}
}
}
sharedDataReq.open('GET', '/data/shared_data/', true);
sharedDataReq.send(null);
}
function notifyLoaded(item, data) {
item.pending = false;
item.data = data;
for (var i = 0;i < item.waiting.length; ++i) {
item.waiting[i].resolve(item.data);
}
item.waiting = [];
}
function notifyError(item, msg) {
item.pending = false;
item.error = new Error(msg);
for (var i = 0;i < item.waiting.length; ++i) {
item.waiting[i].reject(item.error);
}
item.waiting = [];
}
window.__initialDataLoaded = function(initialData, extraData) {
if (extraData) {
for (var key in extraData) {
initialData[key] = extraData[key];
}
}
notifyLoaded(window.__initialData, initialData);
};
window.__initialDataError = function(msg) {
notifyError(window.__initialData, msg);
};
window.__additionalData = {};
window.__pendingAdditionalData = function(paths) {
for (var i = 0;i < paths.length; ++i) {
window.__additionalData[paths[i]] = {
pending: true,
waiting: []
};
}
};
window.__additionalDataLoaded = function(path, data) {
if (path in window.__additionalData) {
notifyLoaded(window.__additionalData[path], data);
} else {
console.error('Unexpected additional data loaded "' + path + '"');
}
};
window.__additionalDataError = function(path, msg) {
if (path in window.__additionalData) {
notifyError(window.__additionalData[path], msg);
} else {
console.error('Unexpected additional data encountered an error "' + path + '": ' + msg);
}
};

})();
</script><script type="text/javascript">

/*
Copyright 2018 Google Inc. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

 http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

(function(){function g(a,c){b||(b=a,f=c,h.forEach(function(a){removeEventListener(a,l,e)}),m())}function m(){b&&f&&0<d.length&&(d.forEach(function(a){a(b,f)}),d=[])}function n(a,c){function k(){g(a,c);d()}function b(){d()}function d(){removeEventListener("pointerup",k,e);removeEventListener("pointercancel",b,e)}addEventListener("pointerup",k,e);addEventListener("pointercancel",b,e)}function l(a){if(a.cancelable){var c=performance.now(),b=a.timeStamp;b>c&&(c=+new Date);c-=b;"pointerdown"==a.type?n(c,
a):g(c,a)}}var e={passive:!0,capture:!0},h=["click","mousedown","keydown","touchstart","pointerdown"],b,f,d=[];h.forEach(function(a){addEventListener(a,l,e)});window.perfMetrics=window.perfMetrics||{};window.perfMetrics.onFirstInputDelay=function(a){d.push(a);m()}})();
</script>

                <!-- Icons for add to home screen flow  -->
                <link rel=\"apple-touch-icon-precomposed\" sizes=\"76x76\" href=\"/static/images/ico/apple-touch-icon-76x76-precomposed-refresh.png/c2433a4e3bc6.png\">
                <link rel=\"apple-touch-icon-precomposed\" sizes=\"120x120\" href=\"/static/images/ico/apple-touch-icon-120x120-precomposed-refresh.png/073826ab4e03.png\">
                <link rel=\"apple-touch-icon-precomposed\" sizes=\"152x152\" href=\"/static/images/ico/apple-touch-icon-152x152-precomposed-refresh.png/a2c0c3c558c0.png\">
                <link rel=\"apple-touch-icon-precomposed\" sizes=\"167x167\" href=\"/static/images/ico/apple-touch-icon-167x167-precomposed-refresh.png/7c0942b9f53c.png\">
                <link rel=\"apple-touch-icon-precomposed\" sizes=\"180x180\" href=\"/static/images/ico/apple-touch-icon-180x180-precomposed-refresh.png/216ba3a34992.png\">
                <link rel=\"apple-touch-icon\" sizes=\"76x76\" href=\"/static/images/ico/apple-touch-icon-76x76-a2h-refresh.png/0c8b5dfc327e.png\">
                <link rel=\"apple-touch-icon\" sizes=\"120x120\" href=\"/static/images/ico/apple-touch-icon-120x120-a2h-refresh.png/d17a02b9cbbc.png\">
                <link rel=\"apple-touch-icon\" sizes=\"152x152\" href=\"/static/images/ico/apple-touch-icon-152x152-a2h-refresh.png/05d118183ea9.png\">
                <link rel=\"apple-touch-icon\" sizes=\"167x167\" href=\"/static/images/ico/apple-touch-icon-167x167-a2h-refresh.png/8be4c958c827.png\">
                <link rel=\"apple-touch-icon\" sizes=\"180x180\" href=\"/static/images/ico/apple-touch-icon-180x180-a2h-refresh.png/e7add10b677a.png\">
            
            
                
                    <link rel=\"icon\" sizes=\"192x192\" href=\"/static/images/ico/favicon-refresh-192.png/7dc5a797e88b.png\">
                
            
        
        
                
                    <link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/static/images/ico/favicon-refresh.ico/eb03b7b3286b.ico\">
                
            
        
        

    <style type=\"text/css\">/* @generated 
  • DO NOT CHANGE THIS FILE. Instead, modify the non-build version of "main.css"

  • then run "yolo css"
    */
    body{-webkit-font-smoothing:antialiased;background-color:#fafafa;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;margin:0}.client-root{font-size:14px}a{text-decoration:none}.-cx-PRIVATE-Page__body__,.-cx-PRIVATE-Page__main__,.-cx-PRIVATE-Page__root__{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.-cx-PRIVATE-Page__root__{height:100vh}.-cx-PRIVATE-Page__body__,.-cx-PRIVATE-Page__main__{-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto}.-cx-PRIVATE-Page__main__{margin-top:137px;position:relative}@media screen and (max-width:990px){.-cx-PRIVATE-Page__main__{display:block;margin-top:0}}.-cx-PRIVATE-NavBar__root__{background-color:#fff;border-bottom:1px solid #efefef;height:77px;position:fixed;top:0;width:100%;z-index:100}.-cx-PRIVATE-NavBar__profilePic__{display:none}.-cx-PRIVATE-NavBar__username__{color:#003569;display:inline!important;float:right;font-weight:400;margin-right:2px;margin-top:12px}.-cx-PRIVATE-NavBar__signIn__{display:inline-block;float:right;margin-right:2px;margin-top:12px}.-cx-PRIVATE-NavBar__signInText__{color:#003569;font-weight:400}.-cx-PRIVATE-NavBar__logo__{background-image:url(/static/images/branding/logoWhiteoutLockup.png/3a62b1a95da3.png);background-size:100%;height:35px;left:16px;position:absolute;text-indent:-9999em;top:6px;width:176px}.-cx-PRIVATE-NavBar__logo__ a{display:block;height:100%;width:100%}@media screen and (-webkit-min-device-pixel-ratio:1.5),screen and (min-resolution:1.5dppx){.-cx-PRIVATE-NavBar__logo__{background-image:url(/static/images/branding/logoWhiteoutLockup@2x.png/43608c988939.png)}}.-cx-PRIVATE-NavBar__logoGroup__{left:16px;position:absolute;top:6px}.-cx-PRIVATE-NavBar__logoGroup__ .-cx-PRIVATE-NavBar__logo__{position:static}.-cx-PRIVATE-NavBar__wrapper__{margin:0 auto;max-width:1026px;padding:0 16px;position:relative}.-cx-PRIVATE-NavBar__topBarActions__,.-cx-PRIVATE-SidebarLayout__content__ li{list-style:none}.-cx-PRIVATE-NavBar__dropdown__,.-cx-PRIVATE-NavBar__topBarLeft__,.-cx-PRIVATE-SidebarLayout__content__ .separator,.-cx-PRIVATE-SidebarLayout__content__ .subtitle{display:none}.-cx-PRIVATE-SidebarLayout__content__{border-right:1px solid #efefef;height:100%;width:220px}.-cx-PRIVATE-SidebarLayout__content__ ul{margin:0;padding:0}@media screen and (max-width:990px){.-cx-PRIVATE-SidebarLayout__content__{margin:0 px;border:0;width:100%}.-cx-PRIVATE-SidebarLayout__content__ ul{display:none}}.-cx-PRIVATE-SidebarLayout__root__{-webkit-box-sizing:border-box;box-sizing:border-box;height:100%;pointer-events:none;position:absolute;width:100%;z-index:1}@media screen and (max-width:990px){.-cx-PRIVATE-SidebarLayout__root__{height:auto;padding-bottom:0;padding-top:78px;position:static}}.-cx-PRIVATE-SidebarLayout__contentWrapper__,.-cx-PRIVATE-SidebarLayout__navWrapper__{-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;margin:0 auto;position:relative;width:992px}@media screen and (min-width:991px){.-cx-PRIVATE-SidebarLayout__navWrapper__{height:100%}}@media screen and (max-width:990px){.-cx-PRIVATE-SidebarLayout__navWrapper__{-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;height:auto;min-height:0;padding:0;width:100%}}.-cx-PRIVATE-SidebarLayout__nav__{float:left;height:100%;padding-right:0;pointer-events:initial;width:256px}@media screen and (max-width:990px){.-cx-PRIVATE-SidebarLayout__nav__{float:none;display:block;margin:0!important;background:0 0;border:0;width:100%}}.-cx-PRIVATE-SidebarLayout__contentWrapper__{background-color:#fff;border:1px solid #efefef;-webkit-box-sizing:border-box;box-sizing:border-box;padding:0 16px 20px}@media screen and (min-width:991px){.-cx-PRIVATE-SidebarLayout__contentWrapper__{border:1px solid #efefef;border-radius:3px}}@media screen and (max-width:990px){.-cx-PRIVATE-SidebarLayout__contentWrapper__{width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.-cx-PRIVATE-SidebarLayout__pageContent__ .-cx-PRIVATE-SidebarLayout__contentWrapper__{padding:0 10px}}.-cx-PRIVATE-SidebarLayout__pageContent__{color:#262626;margin-left:205px;padding:30px 50px}@media screen and (max-width:990px){.-cx-PRIVATE-SidebarLayout__pageContent__{margin-left:0;margin-right:0;padding:20px 0}}.-cx-PRIVATE-SidebarLayout__pageContent__>:first-child{margin-top:0}.-cx-PRIVATE-SidebarLayout__pageContent__ a{color:#003569}.-cx-PRIVATE-SidebarLayout__pageContent__ h1{font-size:32px;font-weight:400;margin-bottom:20px;margin-top:28px}.-cx-PRIVATE-SidebarLayout__pageContent__ h2{font-size:24px;font-weight:400;margin-bottom:12px;margin-top:28px}.-cx-PRIVATE-SidebarLayout__pageContent__ h3{font-weight:600;margin-bottom:12px;margin-top:28px}.-cx-PRIVATE-SidebarLayout__pageContent__ li{padding-left:8px}.-cx-PRIVATE-SidebarLayout__pageContent__ li:not(:first-child){margin-top:8px}.-cx-PRIVATE-SidebarLayout__pageContent__ pre{white-space:pre-wrap}.-cx-PRIVATE-Navigation__header__{color:#999;font-size:16px;font-weight:initial;margin:0;padding:16px;text-transform:uppercase}@media screen and (max-width:990px){.-cx-PRIVATE-Navigation__header__:first-child{display:block}.-cx-PRIVATE-Navigation__header__:not(:first-child){display:none}.-cx-PRIVATE-Navigation__header__ i{float:left;width:22px;height:18px;margin-right:8px;margin-left:10px;background:url(/static/images/glyphs/disclosure-down@2x.png/9ae8409fbb3a.png) no-repeat center;background-size:14px 14px}.-cx-PRIVATE-SidebarLayout__content__.active .-cx-PRIVATE-Navigation__header__ i{-webkit-transform:rotate(180deg);transform:rotate(180deg)}}.-cx-PRIVATE-Navigation__navLink__,.-cx-PRIVATE-Navigation__navLink__:active,.-cx-PRIVATE-Navigation__navLink__:hover,.-cx-PRIVATE-Navigation__navLink__:visited{border-left:2px solid transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:#262626;font-size:16px;display:block;padding:16px 16px 16px 30px;width:100%}.-cx-PRIVATE-Navigation__navLink__:hover{border-left-color:#dbdbdb}.-cx-PRIVATE-Navigation__active__ .-cx-PRIVATE-Navigation__navLink__{border-left-color:#262626;font-weight:600}.-cx-PRIVATE-Footer__root__{font-size:12px;height:77px}.-cx-PRIVATE-Footer__copyright__{color:#262626;display:inline-block;float:right;font-weight:600;margin-top:20px;text-transform:uppercase}.-cx-PRIVATE-Footer__nav__{display:inline-block}@media screen and (max-width:990px){.-cx-PRIVATE-Footer__copyright__{text-align:center;width:100%}}.-cx-PRIVATE-Footer__navItems__{margin:20px 0;padding:0;text-align:center}.-cx-PRIVATE-Footer__navItems__ li{display:inline-block;list-style:none}.-cx-PRIVATE-Footer__navItems__ li:not(:first-child){margin-left:15px}.-cx-PRIVATE-Footer__navItems__ a,.-cx-PRIVATE-Footer__navItems__ a:active,.-cx-PRIVATE-Footer__navItems__ a:focus,.-cx-PRIVATE-Footer__navItems__ a:hover,.-cx-PRIVATE-Footer__navItems__ a:visited{color:#003569;font-weight:600;text-transform:uppercase}.-cx-PRIVATE-Footer__wrapper__{margin-left:auto;margin-right:auto;max-width:1026px;padding:0 20px}.-cx-PRIVATE-ErrorPage__errorContainer__{text-align:center}@media (max-width:990px){.-cx-PRIVATE-ErrorPage__errorContainer__{padding:100px 40px 0}}.-cx-PRIVATE-ErrorPage__errorContainer__ a,.-cx-PRIVATE-ErrorPage__errorContainer__ a:visited{color:#003569}.-cx-PRIVATE-Linkshim__followLink__{background-color:#fff;color:#3897f0;border:1px solid #3897f0;border-radius:3px;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;padding:8px;font:inherit;font-weight:700;width:90%}@media (min-width:736px){.-cx-PRIVATE-Linkshim__followLink__{width:10%}}.-cx-PRIVATE-Linkshim__followLink__:active{opacity:.5}.-cx-PRIVATE-Linkshim__followLink__:focus{color:#1372cc;border:1px solid #1372cc}.-cx-PRIVATE-GatedContentPage__userAvatarContainer__{height:70px;text-align:center}.-cx-PRIVATE-GatedContentPage__userAvatar__{border-radius:50%;height:100%;width:auto}</style>

    <script type=\"text/javascript\" src=\"/static/scripts/jquery.js/a4e77326039e.js\" crossorigin=\"anonymous\"></script> <script type=\"text/javascript\" src=\"/static/scripts/bluebar.js/203583927eba.js\" crossorigin=\"anonymous\"></script>
        <div class=\"root -cx-PRIVATE-Page__root -cx-PRIVATE-Page__root__\">
            
                <div class=\"page -cx-PRIVATE-Page__body -cx-PRIVATE-Page__body__\">
                    
                        
                            <header class=\"top-bar top-bar-new -cx-PRIVATE-NavBar__root -cx-PRIVATE-NavBar__root__\">
<div class=\"top-bar-wrapper -cx-PRIVATE-NavBar__wrapper -cx-PRIVATE-NavBar__wrapper__\">
    <div class=\"logo -cx-PRIVATE-NavBar__logo -cx-PRIVATE-NavBar__logo__\"><a href=\"/\">Instagram</a></div>

    <div class=\"top-bar-left -cx-PRIVATE-NavBar__topBarLeft -cx-PRIVATE-NavBar__topBarLeft__\">
        <ul class=\"top-bar-actions\">
            <li>
                <a class=\"top-bar-home\" href=\"/\" label=Home><i></i></a>
            </li>
        </ul>
    </div>

    
        <div class=\"top-bar-right account-state\" id=\"top_bar_right\">
            <ul class=\"top-bar-actions -cx-PRIVATE-NavBar__topBarActions -cx-PRIVATE-NavBar__topBarActions__\">
                
                
                <li id=\"link_profile\" class=\"link-profile has-dropdown -cx-PRIVATE-NavBar__profile -cx-PRIVATE-NavBar__profile__\">
                    <a href=\"/georgegui7/\">
                        <strong class=\"-cx-PRIVATE-NavBar__username -cx-PRIVATE-NavBar__username__\">georgegui7</strong>
                    </a>

                </li>
                
            </ul>
        </div>
    
</div>
                    <div class=\"main -cx-PRIVATE-Page__main -cx-PRIVATE-Page__main__\">
                        
<div class=\"error-container -cx-PRIVATE-ErrorPage__errorContainer -cx-PRIVATE-ErrorPage__errorContainer__\">


<h2>Error</h2>

    <p>Logged-in use not supported</p>


</div>

                    </div> <!-- .main -->
                    

                </div> <!-- .page -->

                
                <footer class=\"page-footer -cx-PRIVATE-Footer__root -cx-PRIVATE-Footer__root__\" role=\"contentinfo\">
                    <div class=\"wrapper -cx-PRIVATE-Footer__wrapper -cx-PRIVATE-Footer__wrapper__\">
                        <nav class=\"-cx-PRIVATE-Footer__nav -cx-PRIVATE-Footer__nav__\">
                            <ul class=\"-cx-PRIVATE-Footer__navItems -cx-PRIVATE-Footer__navItems__\">
                                <li><a href=\"/about/us/\">About us</a></li>
                                <li><a href=\"https://help.instagram.com/\">Support</a></li>
                                <li><a href=\"https://about.instagram.com/blog/\">Press</a></li>
                                <li><a href=\"\">API</a></li>
                                <li><a href=\"https://about.instagram.com/about-us/careers\">Jobs</a></li>
                                <li><a href=\"/legal/privacy/\">Privacy</a></li>
                                <li><a href=\"/legal/terms/\">
                                  
                                      Terms
                                  
                                </a></li>
                                
                            </ul>
                        </nav>

                        <p class=\"copyright -cx-PRIVATE-Footer__copyright -cx-PRIVATE-Footer__copyright__\">&copy; 2023 Instagram</p>
                    </div>
                </footer>
                
            
            <div id=\"reactModalMountPoint\"></div>
        </div> <!-- .root -->
    
    


    
        

        
    

    <script type=\"text/javascript\">

(function(){
function normalizeError(err) {
var errorInfo = err.error || {};
var getConfigProp = function(propName, defaultValueIfNotTruthy) {
var propValue = window._sharedData && window._sharedData[propName];
return propValue ? propValue : defaultValueIfNotTruthy;
};
var windowUrl = window.location.href;
var errUrl = err.url || windowUrl;
return {
line: err.line || errorInfo.message || 0,
column: err.column || 0,
name: 'InitError',
message: err.message || errorInfo.message || '',
script: errorInfo.script || '',
stack: errorInfo.stackTrace || errorInfo.stack || '',
timestamp: Date.now(),
ref: windowUrl.indexOf('direct') >= 0 ? 'direct' : windowUrl,
deployment_stage: getConfigProp('deployment_stage', ''),
frontend_env: getConfigProp('frontend_env', 'prod'),
rollout_hash: getConfigProp('rollout_hash', ''),
is_prerelease: window.PRERELEASE || false,
bundle_variant: getConfigProp('bundle_variant', null),
request_url: errUrl.indexOf('direct') >= 0 ? 'direct' : errUrl,
response_status_code: errorInfo.statusCode || 0
}
}
window.addEventListener('load', function(){
if (window.__bufferedErrors && window.__bufferedErrors.length) {
if (window.caches && window.caches.keys && window.caches.delete) {
window.caches.keys().then(function(keys) {
keys.forEach(function(key) {
window.caches.delete(key)
})
})
}
window.__bufferedErrors.map(function(error) {
return normalizeError(error)
}).forEach(function(normalizedError) {
var request = new XMLHttpRequest();
request.open('POST', '/client_error/', true);
request.setRequestHeader('Content-Type', 'application/json; charset=utf-8');
request.send(JSON.stringify(normalizedError));
})
}
})
}());
</script>

", "_responseType": "", "_sent": true, "_subscriptions": [], "_timedOut": false, "_trackingName": "unknown", "_url": "https://api.instagram.com/oauth/access_token/", "readyState": 4, "responseHeaders": {"Alt-Svc": "h3=\":443\"; ma=86400", "Cache-Control": "private, no-cache, no-store, must-revalidate", "Content-Language": "en", "Content-Length": "21671", "Content-Type": "text/html; charset=utf-8", "Date": "Fri, 05 May 2023 20:41:03 GMT", "Expires": "Sat, 01 Jan 2000 00:00:00 GMT", "Pragma": "no-cache", "Set-Cookie": "rur=\"EAG\\05458810415039\\0541714855263:01f73a7d7e55f3fe7246a46a025f785c076bab72b906768dca44f5ea3c40d9973056967a\"; Domain=.instagram.com; HttpOnly; Path=/; SameSite=Lax; Secure", "Strict-Transport-Security": "max-age=31536000", "Vary": "Accept-Language, Cookie", "access-control-expose-headers": "X-IG-Set-WWW-Claim", "content-security-policy": "report-uri https://www.instagram.com/security/csp_report/; default-src 'self' https://www.instagram.com; img-src data: blob: https://*.fbcdn.net https://*.instagram.com https://*.cdninstagram.com https://*.facebook.com https://*.fbsbx.com https://*.giphy.com; font-src data: https://*.fbcdn.net https://*.instagram.com https://*.cdninstagram.com; media-src 'self' blob: https://www.instagram.com https://*.cdninstagram.com https://*.fbcdn.net; manifest-src 'self' https://www.instagram.com; script-src 'self' https://instagram.com https://www.instagram.com https://*.www.instagram.com https://*.cdninstagram.com wss://www.instagram.com https://*.facebook.com https://*.fbcdn.net https://*.facebook.net 'unsafe-inline' 'unsafe-eval' blob:; style-src 'self' https://*.www.instagram.com https://www.instagram.com 'unsafe-inline'; connect-src 'self' https://instagram.com https://www.instagram.com https://*.www.instagram.com https://graph.instagram.com https://*.graph.instagram.com https://i.instagram.com/graphql_www https://graphql.instagram.com https://*.cdninstagram.com https://api.instagram.com https://i.instagram.com https://*.i.instagram.com https://*.od.instagram.com wss://www.instagram.com wss://edge-chat.instagram.com https://*.facebook.com https://*.fbcdn.net https://*.facebook.net chrome-extension://boadgeojelhgndaghljhdicfkmllpafd blob:; worker-src 'self' blob: https://www.instagram.com; frame-src 'self' https://instagram.com https://www.instagram.com https://*.instagram.com https://staticxx.facebook.com https://www.facebook.com https://web.facebook.com https://connect.facebook.net https://m.facebook.com https://*.fbsbx.com; object-src 'none'; upgrade-insecure-requests", "cross-origin-embedder-policy-report-only": "require-corp;report-to=\"coep\"", "cross-origin-opener-policy": "same-origin-allow-popups;report-to=\"coop\"", "origin-trial": "AuqWincgAuXeuu3KypEMnrrFEJHySaesyJS3EaIH40zvafzrU0Irhb7+5QwZpOqMZrPTjgvFl7Z5jJgy1dNAcQMAAAB6eyJvcmlnaW4iOiJodHRwczovL2luc3RhZ3JhbS5jb206NDQzIiwiZmVhdHVyZSI6IkNyb3NzT3JpZ2luT3BlbmVyUG9saWN5UmVwb3J0aW5nIiwiZXhwaXJ5IjoxNjEzNDExNjYyLCJpc1N1YmRvbWFpbiI6dHJ1ZX0=", "report-to": "{\"group\": \"coep\", \"max_age\": 86400, \"endpoints\": [{\"url\": \"/security/coep_report/\"}]},{\"group\": \"coop\", \"max_age\": 86400, \"endpoints\": [{\"url\": \"/security/coop_report/\"}]}", "retry-after": "1", "x-aed": "86", "x-content-type-options": "nosniff", "x-fb-trip-id": "1679558926", "x-frame-options": "SAMEORIGIN", "x-ig-cache-control": "no-cache", "x-ig-origin-region": "eag", "x-ig-peak-time": "0", "x-ig-push-state": "c2", "x-ig-request-elapsed-time-ms": "89", "x-xss-protection": "0"}, "responseURL": "https://api.instagram.com/oauth/access_token/", "status": 403, "timeout": 0, "upload": {}, "withCredentials": true}, "status": 403, "statusText": undefined}

+1

??? fine, srry for the long logs lol. Basically, I'm getting pretty plugin errors as a result

I started encountering this issue as well. I've found the access token call works fine when I'm running a simulator. If I take the values and use them in Postman to manually make a request to oauth/access_token, I'm receiving back an access token fine as well.

Only when I run on a physical device, the IG servers always return a 403.

@Robogram Are you encountering the same behavior on physical devices only? Does running your app on a simulator work fine?

I thought that perhaps the axios version in package.json in the library was the cause of the problem, but I patched react-native-instagram-login to use "axios": "^1.4.0", and the 403 issue on a physical device persists.

I even tried making the request via fetch instead of axios, and I ended up with the same 403 on physical devices only and success on simulators behavior.

Since this is a 403, I'm thinking the likely culprit is the IG servers themselves and not this library. I have an open bug request with FB since May 4. I'll try to remember to come back to this post if I hear anything one way or the other.

Yeah, we're on the same page here lol. I'm currently still testing stuff out with both fetch and axios in javascript,

but I haven't ran it on a simulator yet, just my physical device so far, I'll try it asap and let you know:)

Yeah, somehow the simulator works but not on the physical device. Never experienced this before, this is interesting lol.

My real device also has this error, why 1 time struggling can't handle it, I called api get access_token on my Backend and no more 403 error. It's so tired

yeah I'm tired too lol. I hope the instagram api team can acknowledge this sooner and get it fix

Not a big surprise, but Meta support provided no support at all. I provided them with the details that only requests coming from a physical mobile device were receiving a 403 from their servers, and they told me that's not their realm. You can find the support ticket here: https://developers.facebook.com/support/bugs/1931307653882844/ And feel free to open up your own ticket so that they can understand the issue is with their servers and not with the code.

I also posted in the community to see if others have been encountering this odd issue: https://developers.facebook.com/community/threads/805517364418376/?post_id=805517367751709

try this solution in react-native-instagram-login/instagram.js

I replace scope else in line around 70.

      const data = {
        client_id: appId,
        client_secret: appSecret,
        grant_type: 'authorization_code',
        redirect_uri: redirectUrl,
        code: code,
      };
      
      const url = 'oauth/access_token';
      
      const api = axios.create({
        baseURL: 'https://api.instagram.com/',
        withCredentials: false, // Disable automatic handling of cookies
      });
      
      const config = {
        headers: {
          'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
        },
      };
      
      api
          .post(url, new URLSearchParams(data).toString(), config)
          .then((res) => {
            console.log(res);
            // Handle the response containing the access token
            if (res) {
              this.props.onLoginSuccess(res.data, results);
            } else {
              this.props.onLoginFailure(results);
            }
            // Use the access token to make further API requests
            // ...
          })
          .catch((error) => {
            console.log(error);
            // Handle any error that occurred during the request
          });

try this solution in react-native-instagram-login/instagram.js

I replace scope else in line around 70.

      const data = {
        client_id: appId,
        client_secret: appSecret,
        grant_type: 'authorization_code',
        redirect_uri: redirectUrl,
        code: code,
      };
      
      const url = 'oauth/access_token';
      
      const api = axios.create({
        baseURL: 'https://api.instagram.com/',
        withCredentials: false, // Disable automatic handling of cookies
      });
      
      const config = {
        headers: {
          'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
        },
      };
      
      api
          .post(url, new URLSearchParams(data).toString(), config)
          .then((res) => {
            console.log(res);
            // Handle the response containing the access token
            if (res) {
              this.props.onLoginSuccess(res.data, results);
            } else {
              this.props.onLoginFailure(results);
            }
            // Use the access token to make further API requests
            // ...
          })
          .catch((error) => {
            console.log(error);
            // Handle any error that occurred during the request
          });

Thank you man:) I'll definitely try this whenever I can

@rofirezkin Great find! The key is on the axios create call
withCredentials: false, // Disable automatic handling of cookies

Adding that one line will resolve the issue!

If you have patch-package, it should produce a patch file along these lines:

diff --git a/node_modules/react-native-instagram-login/Instagram.js b/node_modules/react-native-instagram-login/Instagram.js
index bffac6c..5e81911 100644
--- a/node_modules/react-native-instagram-login/Instagram.js
+++ b/node_modules/react-native-instagram-login/Instagram.js
@@ -72,6 +72,7 @@ export default class Instagram extends Component {
           let http = axios.create({
             baseURL: 'https://api.instagram.com/oauth/access_token',
             headers: headers,
+            withCredentials: false,
           });
           let form = new FormData();
           form.append('client_id', appId);

I have tested the above on my physical device, and it worked. A colleague also tested the patch, and it's working as expected to resolve the IG issue!

@rofirezkin Great find! The key is on the axios create call withCredentials: false, // Disable automatic handling of cookies

Adding that one line will resolve the issue!

If you have patch-package, it should produce a patch file along these lines:

diff --git a/node_modules/react-native-instagram-login/Instagram.js b/node_modules/react-native-instagram-login/Instagram.js
index bffac6c..5e81911 100644
--- a/node_modules/react-native-instagram-login/Instagram.js
+++ b/node_modules/react-native-instagram-login/Instagram.js
@@ -72,6 +72,7 @@ export default class Instagram extends Component {
           let http = axios.create({
             baseURL: 'https://api.instagram.com/oauth/access_token',
             headers: headers,
+            withCredentials: false,
           });
           let form = new FormData();
           form.append('client_id', appId);

I have tested the above on my physical device, and it worked. A colleague also tested the patch, and it's working as expected to resolve the IG issue!

Thank you @rofirezkin for the solution,

@rofirezkin Great find! The key is on the axios create call withCredentials: false, // Disable automatic handling of cookies

Adding that one line will resolve the issue!

If you have patch-package, it should produce a patch file along these lines:

diff --git a/node_modules/react-native-instagram-login/Instagram.js b/node_modules/react-native-instagram-login/Instagram.js
index bffac6c..5e81911 100644
--- a/node_modules/react-native-instagram-login/Instagram.js
+++ b/node_modules/react-native-instagram-login/Instagram.js
@@ -72,6 +72,7 @@ export default class Instagram extends Component {
           let http = axios.create({
             baseURL: 'https://api.instagram.com/oauth/access_token',
             headers: headers,
+            withCredentials: false,
           });
           let form = new FormData();
           form.append('client_id', appId);

I have tested the above on my physical device, and it worked. A colleague also tested the patch, and it's working as expected to resolve the IG issue!

try this solution in react-native-instagram-login/instagram.js

I replace scope else in line around 70.

      const data = {
        client_id: appId,
        client_secret: appSecret,
        grant_type: 'authorization_code',
        redirect_uri: redirectUrl,
        code: code,
      };
      
      const url = 'oauth/access_token';
      
      const api = axios.create({
        baseURL: 'https://api.instagram.com/',
        withCredentials: false, // Disable automatic handling of cookies
      });
      
      const config = {
        headers: {
          'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
        },
      };
      
      api
          .post(url, new URLSearchParams(data).toString(), config)
          .then((res) => {
            console.log(res);
            // Handle the response containing the access token
            if (res) {
              this.props.onLoginSuccess(res.data, results);
            } else {
              this.props.onLoginFailure(results);
            }
            // Use the access token to make further API requests
            // ...
          })
          .catch((error) => {
            console.log(error);
            // Handle any error that occurred during the request
          });

Thank you @rofirezkin. Worked as expected

Hello! Are you guys going to create a Pull Request?

Hi guys! Will you be creating a pull request for this? I was facing the same issue and @rofirezkin's solution solved my problem. Thanks for this!

I haven't used this library for a long time. Thank you all. This pull request merged and released a new version.