Facebook 登录时出现 JavaScript SDK 错误:“重定向 URI 未列入白名单" [英] Facebook login with JavaScript SDK error: "redirect URI not whitelisted"

查看:30
本文介绍了Facebook 登录时出现 JavaScript SDK 错误:“重定向 URI 未列入白名单"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望我的网站使用 facebook 登录,但我看到了这个错误.

<块引用>

给定 URL 未在客户端 OAuth 设置中列入白名单:此重定向失败,因为重定向 URI 未在应用的客户端 OAuth 设置中列入白名单.确保启用客户端和 Web OAuth 登录,并将您的所有应用域添加为有效的 OAuth 重定向 URI.

<头><title>Facebook 登录 JavaScript 示例</title><meta charset="UTF-8"><身体><脚本>//使用来自 FB.getLoginStatus() 的结果调用它.函数 statusChangeCallback(响应){console.log('statusChangeCallback');控制台日志(响应);//响应对象返回一个状态字段,允许//app 知道这个人的当前登录状态.//可以在文档中找到关于响应对象的完整文档//对于 FB.getLoginStatus().if (response.status === 'connected') {//登录到您的应用程序和 Facebook.测试API();} else if (response.status === 'not_authorized') {//此人已登录 Facebook,但未登录您的应用.document.getElementById('status').innerHTML = '请登录' +'进入这个应用程序.';} 别的 {//此人未登录 Facebook,因此我们不确定//他们是否登录到这个应用程序.document.getElementById('status').innerHTML = '请登录' +'进入脸书.';}}//当有人完成登录时调用此函数//按钮.在示例中查看附加到它的登录处理程序//下面的代码.函数 checkLoginState() {FB.getLoginStatus(函数(响应){statusChangeCallback(响应);});}window.fbAsyncInit = function() {FB.init({appId: 'XXXXXXXXXXXX',cookie : true,//启用 cookie 以允许服务器访问//会话xfbml : true,//解析此页面上的社交插件version : 'v2.5'//使用 2.2 版});//现在我们已经初始化了 JavaScript SDK,我们调用//FB.getLoginStatus().此函数获取状态//访问此页面的人可以返回三种状态之一//您提供的回调.他们可以:////1. 登录你的应用程序('connected')//2. 已登录 Facebook,但未登录您的应用 ('not_authorized')//3. 未登录 Facebook,无法判断是否登录//你的应用与否.////这三种情况在回调函数中处理.FB.getLoginStatus(函数(响应){statusChangeCallback(响应);});};//异步加载SDK(功能(d,s,id){var js, fjs = d.getElementsByTagName(s)[0];如果 (d.getElementById(id)) 返回;js = d.createElement(s);js.id = id;js.src = "//connect.facebook.net/en_US/sdk.js";fjs.parentNode.insertBefore(js, fjs);}(文档, '脚本', 'facebook-jssdk'));//这里我们在登录后运行一个非常简单的Graph API测试//成功的.有关何时进行此调用,请参阅 statusChangeCallback().功能测试API(){console.log('欢迎!正在获取您的信息....');FB.api('/me', function(response) {console.log('登录成功:' + response.name);document.getElementById('status').innerHTML ='感谢登录,' + response.name + '!';});}<!--下面我们包括登录按钮社交插件.此按钮使用JavaScript SDK 显示一个图形登录按钮,触发单击时的 FB.login() 函数.--><fb:login-button scope="public_profile,email" onlogin="checkLoginState();"></fb:登录按钮><div id="状态">

解决方案

您必须确保已在开发者页面注册您的应用到这里

对于 facebook 登录文档到这里

然后,当您注册您的应用程序时,请确保您用作重定向页面的任何 URL 与您的应用程序发送的 URL 相同.

例如http://example.com不是,http://www.example.com

设置 url 作为本地主机参考这篇文章

请确保您正在设置您的

$app_id = "xxx";$app_secret = "xxx";$my_url ="http://localhost:3080/example.php";

当您在 facebook 的开发者页面上创建您的应用程序时,所有数据都与您的应用程序设置中指定的正确数据一致.

为了尽可能清楚地说明这一点.

转到您的应用程序页面并在本地主机中输入该页面的 URL.然后转到您的代码并添加完全相同的网址.

在应用设置中,

http://localhost

在你的代码中

http://localhost

如果你的本地主机后面有端口号,

在应用设置中,

http://localhost:8080

在你的代码中

http://localhost:8080

如果你的本地主机后面有一个文件

在应用设置中,

http://localhost/myfile.php

在你的代码中

 http://localhost/myfile.php

请试试这个代码.用此代码替换您的代码,不要忘记更改

YOUR_FACBEOOK_APP_ID

给你自己的.

 <div id="fb-root"></div><脚本>window.fbAsyncInit = function() {FB.init({appId: 'xxxxxxxxxxxxxxx',状态:真实,饼干:是的,xfbml: 真});};//异步加载SDK(功能(d){var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];if (d.getElementById(id)) {return;}js = d.createElement('脚本');js.id = id;js.async = true;js.src = "//connect.facebook.net/en_US/all.js";ref.parentNode.insertBefore(js, ref);}(文档));函数登录(){FB.登录(功能(响应){//处理响应console.log("响应到这里!");}, {scope: 'read_stream,publish_stream,publish_actions,read_friendlists'});}函数注销(){FB.logout(功能(响应){//用户现在已注销});}var status = FB.getLoginStatus();控制台日志(状态);<button onclick="javascript:login();">登录 Facebook</button><br><button onclick="javascript:logout();">从 Facebook 注销</button>

I want my website to login with facebook but I am seeing this error.

Given URL is not whitelisted in Client OAuth Settings: This redirect failed because the redirect URI is not whitelisted in the app’s Client OAuth Settings. Make sure Client and Web OAuth Login are on and add all your app domains as Valid OAuth Redirect URIs.

<!DOCTYPE html>
    <html>
    <head>
    <title>Facebook Login JavaScript Example</title>
    <meta charset="UTF-8">
    </head>
    <body>
    <script>
      // This is called with the results from from FB.getLoginStatus().
      function statusChangeCallback(response) {
        console.log('statusChangeCallback');
        console.log(response);
        // The response object is returned with a status field that lets the
        // app know the current login status of the person.
        // Full docs on the response object can be found in the documentation
        // for FB.getLoginStatus().
        if (response.status === 'connected') {
          // Logged into your app and Facebook.
          testAPI();
        } else if (response.status === 'not_authorized') {
          // The person is logged into Facebook, but not your app.
          document.getElementById('status').innerHTML = 'Please log ' +
            'into this app.';
        } else {
          // The person is not logged into Facebook, so we're not sure if
          // they are logged into this app or not.
          document.getElementById('status').innerHTML = 'Please log ' +
            'into Facebook.';
        }
      }

      // This function is called when someone finishes with the Login
      // Button.  See the onlogin handler attached to it in the sample
      // code below.
      function checkLoginState() {
        FB.getLoginStatus(function(response) {
          statusChangeCallback(response);
        });
      }

      window.fbAsyncInit = function() {
      FB.init({
          appId: 'XXXXXXXXXXXX',
        cookie     : true,  // enable cookies to allow the server to access 
                            // the session
        xfbml      : true,  // parse social plugins on this page
        version    : 'v2.5' // use version 2.2
      });

      // Now that we've initialized the JavaScript SDK, we call 
      // FB.getLoginStatus().  This function gets the state of the
      // person visiting this page and can return one of three states to
      // the callback you provide.  They can be:
      //
      // 1. Logged into your app ('connected')
      // 2. Logged into Facebook, but not your app ('not_authorized')
      // 3. Not logged into Facebook and can't tell if they are logged into
      //    your app or not.
      //
      // These three cases are handled in the callback function.

      FB.getLoginStatus(function(response) {
        statusChangeCallback(response);
      });

      };

      // Load the SDK asynchronously
      (function(d, s, id) {
        var js, fjs = d.getElementsByTagName(s)[0];
        if (d.getElementById(id)) return;
        js = d.createElement(s); js.id = id;
        js.src = "//connect.facebook.net/en_US/sdk.js";
        fjs.parentNode.insertBefore(js, fjs);
      }(document, 'script', 'facebook-jssdk'));

      // Here we run a very simple test of the Graph API after login is
      // successful.  See statusChangeCallback() for when this call is made.
      function testAPI() {
        console.log('Welcome!  Fetching your information.... ');
        FB.api('/me', function(response) {
          console.log('Successful login for: ' + response.name);
          document.getElementById('status').innerHTML =
            'Thanks for logging in, ' + response.name + '!';
        });
      }
    </script>

    <!--
      Below we include the Login Button social plugin. This button uses
      the JavaScript SDK to present a graphical Login button that triggers
      the FB.login() function when clicked.
    -->

    <fb:login-button scope="public_profile,email" onlogin="checkLoginState();">
    </fb:login-button>

    <div id="status">
    </div>

    </body>
    </html>

解决方案

You must make sure you have registered your app with the developer page Go here

For the facebook login docs Go here

Then when you register your app make sure whatever URL you are using as the redirect page is the same as your app is sending too.

For example http://example.com is not, http://www.example.com

To settup url as the local host refer to this post

Please make sure you are setting your

$app_id = "xxx"; 
$app_secret = "xxx"; 
$my_url ="http://localhost:3080/example.php";

All to the correct data as specified inside your app settings when you create your app on facebook's developer page.

To make this as clear as possible.

Go to your app page and enter the url of the page in your localhost. Then go to your code and add the exact same url.

in app settings,

http://localhost

in your code

http://localhost

If there is a port number after your localhost,

in app settings,

http://localhost:8080

in your code

http://localhost:8080

If there is a file after your localhost

in app settings,

http://localhost/myfile.php

in your code

    http://localhost/myfile.php

Please try this code. replace your code with this code and do not forget to change the

YOUR_FACBEOOK_APP_ID

to your own.

  <div id="fb-root"></div>

    <script>
    window.fbAsyncInit = function() {
            FB.init({
            appId: 'xxxxxxxxxxxxx',
            status: true,
            cookie: true,
            xfbml: true
        });
    };

    // Load the SDK asynchronously
    (function(d){
    var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
    if (d.getElementById(id)) {return;}
    js = d.createElement('script'); js.id = id; js.async = true;
    js.src = "//connect.facebook.net/en_US/all.js";
    ref.parentNode.insertBefore(js, ref);
    }(document));

    function login() {
        FB.login(function(response) {

        // handle the response
        console.log("Response goes here!");

        }, {scope: 'read_stream,publish_stream,publish_actions,read_friendlists'});            
    }

    function logout() {
        FB.logout(function(response) {
          // user is now logged out
        });
    }

    var status = FB.getLoginStatus();

    console.log(status);

    </script>

    <button onclick="javascript:login();">Login Facebook</button>

    <br>

    <button onclick="javascript:logout();">Logout from Facebook</button>

这篇关于Facebook 登录时出现 JavaScript SDK 错误:“重定向 URI 未列入白名单"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆