未捕获的类型错误:FB.login 不是函数

2024-02-10

我正在使用 Facebook JavaScript API 创建 Facebook 登录功能并从 API 获取用户详细信息。

当我以正常方式使用相同的代码时,我从 Facebook api 获取数据。

当我尝试使用 requireJS 做同样的事情时,我收到此错误

“未捕获类型错误:FB.login 不是函数”

我见过像未定义函数这样的错误,但这对我来说是新的。

我遵循的格式

https://developers.facebook.com/docs/javascript/howto/requirejs/v2.7 https://developers.facebook.com/docs/javascript/howto/requirejs/v2.7

我的代码 fb.js 放在这里

define(['jquery','facebook'], function($,FB){

window.fbAsyncInit = function() {
    FB.init({
        appId   : '89080988080545753578',
        oauth   : true,
        status  : true, // check login status
        cookie  : true, // enable cookies to allow the server to access the session
        xfbml   : true ,// parse XFBML
        version    : 'v2.5' 
    });

  };

window.fb_login = function(){
FB.login(function(response) {

        if (response.authResponse) {
            console.log('Welcome!  Fetching your information.... ');
            //console.log(response); // dump complete info
            access_token = response.authResponse.accessToken; //get access token
            user_id = response.authResponse.userID; //get FB UID

            FB.api('/me', function(response) {
                user_email = response.email; //get user email
                $("#name").val(response.name);
                $("#user-id").val(response.id);
                if(response.gender == 'male') {
                    $('input[name="gender"][value="female"]').attr('checked', false);
                    $('input[name="gender"][value="male"]').attr('checked', true);

                } else {

                    $('input[name="gender"][value="male"]').attr('checked', false);
                    $('input[name="gender"][value="female"]').attr('checked', true);
                }


                $("#birthday").val(response.birthday);
                $("#email").val(response.email);
          // you can store this data into your database             
            });

        } else {
            //user hit cancel button
            console.log('User cancelled login or did not fully authorize.');

        }

    }, {
        scope: 'publish_stream,email'
    });
};
 });

以及按钮点击的 html 代码

<button type="button" class="btn btn-lg btn-block sm fb" value="Login" id="FB">Facebook</button>

以及点击事件的JS代码

$( document ).ready(function() {
    $(".btn").click(function(){
        //getting button id value in variable
        var method = $(this).attr('id');
        $("#sign_method").val(method);
        if(method == 'FB') {

            alert('Facebook');
            fb_login();
            //fbData();
            //$("#signup").submit();

        } else if(method == 'GP') {

            alert('Google Plus');
            login();
           // $("#signup").submit();

        } else {

            alert('Email');               
            $("#signup").remove();
            alert('form removed');

            window.location.href = "signup.html";

        }
    });

该错误信息表示JS SDK尚未加载。您的代码中缺少此内容:

(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'));

FB.login必须在之后使用FB.init。确保FB.init被叫。

更多信息:http://www.devils-heaven.com/facebook-javascript-sdk-login/ http://www.devils-heaven.com/facebook-javascript-sdk-login/

对于 RequireJS,这将是包含 JS SDK 的官方方式:https://developers.facebook.com/docs/javascript/howto/requirejs/v2.7#adding-a-shim-to-the-facebook-sdk https://developers.facebook.com/docs/javascript/howto/requirejs/v2.7#adding-a-shim-to-the-facebook-sdk

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

未捕获的类型错误:FB.login 不是函数 的相关文章

随机推荐

  • 如何在向量的每个值之间写入逗号?

    我想将向量导出到文件中 每个值之间用逗号分隔 我尝试过使用paste with sep 但它不起作用 有谁知道为什么 gt x lt rnorm 10 gt paste x sep 1 1 08574649988891 2 95803811
  • C 中如何解析链接宏?

    如果我想使用预处理器 define语句可以轻松定义和计算常量和常用函数 并利用较少的 RAM 开销 与使用const值 但是 我不确定如果同时使用多个宏 它们将如何解决 我正在设计自己的DateTime代码处理 类似于 Linux 时间戳
  • 为 Python 3.x 编译 zbar

    几年前 我花了一些时间寻找一种方法zbar使用 Python 2 7 Windows x64 我发布了这个工作解决方案 如何在 最好是纯 Python 中解码 QR 码图像 https stackoverflow com questions
  • 单击模式框时按钮没有被触发

    Assign a Textbox Value to the modal box on the same page已答复 新问题 为什么当我单击按钮时模式框上的按钮没有被触发 我错过了什么吗 我添加了代码来处理服务器端的点击事件 Protec
  • 如何让元素在容器内浮动

    我想把 container在屏幕中央并制作 图表 float left在 的里面 container 但是使用下面的代码 图表 位于 container 谁能告诉我如何更改代码 并告诉我为什么代码将 图表 放在 container cont
  • 什么是 virtualenv,为什么我应该使用它?

    我正在尝试使用此命令安装 Python 包 pip install
  • 如何使用selenium java在mozilla firefox上使用假网络摄像头

    我正在尝试自动化一个包含网络摄像头流的网站 为了使其自动化 我需要某种方法来伪造网络摄像头 我知道这个选项 use fake device for media stream在 Chrome 中模拟网络摄像头 这在 Chrome 中对我有用
  • jqGrid 和动态分组

    我正在对 jqGrid 进行一些动态分组 按照以下位置发布的示例 http www trirand com blog jqgrid jqgrid html http www trirand com blog jqgrid jqgrid ht
  • 服务器是否可以同时收到两个请求? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我对服务器如何处理数千个请求有点困惑 我想如果有数千个请求 最终其中两个请求必须同时到达服务器 如果两条消息同时到达它 它只能处理一条 对
  • PHP:使用 preg_match 获取 url 变量?

    http www example com id 05 or http www example com id 05 name johnny 这是一个字符串 我想得到的值 id从中 它的正确模式是什么 您不需要正则表达式 除非您有充分的理由 否
  • 防止 HttpClient 4 遵循重定向

    我正在使用 Apache HttpComponents 库连接到我的 AppEngine 应用程序 为了对我的用户进行身份验证 我需要将身份验证令牌传递到应用程序的登录地址 http myapp appspot com ah login a
  • 下载大文件 - iPhone SDK

    我正在使用 Erica Sadun 的异步下载方法 项目文件的链接位于此处 download http uhelios com downloaderica zip 但是她的方法不适用于大尺寸 50 mb 或以上 的文件 如果我尝试下载超过
  • 如何访问组件中 FormArray 中定义的 HTML 中的控件 - Angular2

    我在用ReactiveFroms在我的应用程序中 当我添加static控制然后一切都工作正常 我正在展示validation使用错误inbuilt类的controls 在职的Plunkr https plnkr co edit AZ5Jgw
  • 如何注册私有 DICOM 标签?

    我想知道公司 例如飞利浦或西门子 如何注册私有 DICOM 标签 I mean 如何保证DICOM组不被其他厂家占用 假设飞利浦选择了标签 1111 00xx 那么它需要知道组 1111 尚未被占用 之后NEMA还需要参与吗 或者有其他组织
  • 无法在 android 中添加 addView

    我需要朋友们的帮助 这是我的活动 public class MainActivity extends Activity float values 700 400 100 500 600 float values1 70 40 10 50 O
  • System.IO.Packaging:无法确定域的身份

    我正在使用 System IO Packaging 在完全托管的桌面 Windows 窗体 应用程序中创建文件 在一定条件下 OPC包的写入会引发 无法确定域的身份 例外 我了解到它与独立存储有关 因为打包 API 有时会在那里创建临时数据
  • 如何使用引导行和列增加文本区域的高度

    我设计了一个表单 其中连续有两个项目 如下所示 我的输出 Code我用过的 div class row div class col sm 3 fieldset class form group fieldset div div
  • 计算unix日志文件中两个时间段之间的行数[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 Log file
  • 如何创建一个从 goroutine 接收多个返回值的通道

    我在 Go 中有一个返回两个值的函数 我想将其作为 goroutine 运行 但我无法弄清楚创建接收两个值的通道的语法 有人能指出我正确的方向吗 定义一个包含两个值字段的自定义类型 然后创建一个chan那种类型的 编辑 我还添加了一个使用多
  • 未捕获的类型错误:FB.login 不是函数

    我正在使用 Facebook JavaScript API 创建 Facebook 登录功能并从 API 获取用户详细信息 当我以正常方式使用相同的代码时 我从 Facebook api 获取数据 当我尝试使用 requireJS 做同样的