我试图在Google + API中使用requireJS,但是当我单击登录按钮时会出错。
下面是错误和屏幕截图:
获取
https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.f5Li87Zolqg.O/m…sv=1/d=1/ed=1/am=AQ/RS=AGLTcCPR6xH_GlLdKZ8KMxaWNPWQokoYsg/cb=gapi.loaded_0
截图:https://i.imgsafe.org/098c5b5634.png
我用的是这个代码:
gapi is not defined error comes when using with requirejs
注意:我在JavaScript文件中调用一个JavaScript,并在这里定义它,这里是它的第一行。
我的screen.js文件
define(["facebook","fb","googleplus","gp"], function(facebook,fb,gapi,gp){
// some bunch other code will go here
$('#login').click(login);
// some other code will go here
});gp.js包含以下代码
//$('#login').click(login);
//$('#logout').click(logout);
function logout(){
gapi.auth.signOut();
location.reload();
}
function login() {
var myParams = {
'clientid' : '455646565646-ppqmgsfghfdhgfghqguj3i4ir70i.apps.googleusercontent.com',
'cookiepolicy' : 'single_host_origin',
'callback' : 'loginCallback',
'approvalprompt':'force',
'scope' : 'https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/plus.me https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile'
};
gapi.auth.signIn(myParams);
}
window.loginCallback = function (result) {
if (result['status']['signed_in']) {
gapi.client.load('plus', 'v1', function () {
var request = gapi.client.plus.people.get(
{
'userId': 'me'
});
request.execute(function (resp) {
var email = '';
if (resp['emails']) {
for (i = 0; i < resp['emails'].length; i++) {
if (resp['emails'][i]['type'] == 'account') {
email = resp['emails'][i]['value'];
}
}
}
var str = "Name:" + resp['displayName'] + "<br>";
str += "Email:" + email + "<br>";
str += "DOB:" + resp['birthday'] + "<br>";
str += "Gender:" + resp['gender'] + "<br>";
document.getElementById("profile").innerHTML = str;
});
});
}
}
onLoadCallback = function(){
gapi.client.setApiKey('Sgtfjhygjhgjhg9U1nKaZ5H1MmwTuthspQPNqY');
gapi.client.load('plus', 'v1',function(){});
}和我的main.js在这里
require.config({
shim: {
'gp' : {
deps: ['jquery','googleplus'],
},
'googleplus' : {
deps: ['jquery'],
exports: 'gapi'
},
},
paths: {
'googleplus': 'https://apis.google.com/js/client.js?onload=onLoadCallback'
},
})
require(['gp']);为什么会发生这种事,我该怎么解决呢?
发布于 2016-08-03 06:19:18
gs.js必须是一个模块,如果要使用在模块中定义的函数,则该模块必须返回此函数:
define(['jquery', 'googleplus'], function($, gapi) {
function logout(){
gapi.auth.signOut();
location.reload();
}
function login() {
var myParams = {
'clientid' : '455646565646-ppqmgsfghfdhgfghqguj3i4ir70i.apps.googleusercontent.com',
'cookiepolicy' : 'single_host_origin',
'scope' : 'https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/plus.me https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile'
};
gapi.load('client:auth2', function() {
gapi.auth2.init(myParams).then(function() {
gapi.auth2.getAuthInstance().signIn().then(loginCallback);
});
});
}
var loginCallback = function () {
gapi.client.load('plus', 'v1', function () {
var request = gapi.client.plus.people.get(
{
'userId': 'me'
});
request.execute(function (resp) {
var email = '';
if (resp['emails']) {
for (i = 0; i < resp['emails'].length; i++) {
if (resp['emails'][i]['type'] == 'account') {
email = resp['emails'][i]['value'];
}
}
}
var str = "Name:" + resp['displayName'] + "<br>";
str += "Email:" + email + "<br>";
str += "DOB:" + resp['birthday'] + "<br>";
str += "Gender:" + resp['gender'] + "<br>";
document.getElementById("profile").innerHTML = str;
});
});
}
gapi.client.setApiKey('Sgtfjhygjhgjhg9U1nKaZ5H1MmwTuthspQPNqY');
return {
login: login,
logout: logout
};
});现在,您可以在其他模块中使用函数login和logout:
define(["jquery", "gp"], function($, gp){
$('#login').click(gp.login);
});编辑:
我试图重写基于login的https://developers.google.com/identity/sign-in/web/reference#gapiauth2initwzxhzdk19paramswzxhzdk20函数。
https://stackoverflow.com/questions/38720878
复制相似问题