Javascript Phonegap中的社交登录

Javascript Phonegap中的社交登录,javascript,cordova,Javascript,Cordova,我一直坚持通过Phonegap进行社交登录(Facebook、Google和twitter)。 我在谷歌上搜索了很多解决方案,但它们在两种平台上都不起作用(例如:android或iOS)。 是否有人使用phonegap在其应用程序中实现了社交登录 如果有人能给我提供运行代码,我将不胜感激 谢谢, Sabir我知道回答你的特定问题可能已经晚了,但我也遇到了同样的问题-我尝试过的PhoneGap/Cordova中用于社交登录的所有当前(2016年9月)脚本、代码片段和库都不起作用,因此我从零开始制作

我一直坚持通过Phonegap进行社交登录(Facebook、Google和twitter)。 我在谷歌上搜索了很多解决方案,但它们在两种平台上都不起作用(例如:android或iOS)。 是否有人使用phonegap在其应用程序中实现了社交登录

如果有人能给我提供运行代码,我将不胜感激

谢谢,
Sabir

我知道回答你的特定问题可能已经晚了,但我也遇到了同样的问题-我尝试过的PhoneGap/Cordova中用于社交登录的所有当前(2016年9月)脚本、代码片段和库都不起作用,因此我从零开始制作了一些简单的函数,可能对最终来到这里的人仍然有用。您可以使用它们让用户登录LinkedIn、Facebook和Google(+)。我还制作了一些简单的函数,从访问令牌中检索一些基本的用户信息,该令牌是通过用户登录给定网络返回的。您可以检查这些函数,但它们通常会将令牌或/和用户数据保存到localStorage以供以后使用。它们已经在2016年9月进行了测试,运行良好。我希望这能帮助其他在网络上发现失败片段的人

您可以随时插入代码并使用函数。它需要jQuery和PhoneGap的InApp浏览器(除了在社交媒体上制作应用程序/客户端以填充应用程序id和应用程序机密)

顺便说一句,将客户机机密直接存储在PhoneGap应用程序中并不是最好的做法,因为恶意的人可能会看到源代码

代码可以在很多地方进行重构,所以可以随意进行重构,但它确实做到了。您可能还必须处理用户取消登录过程的情况

var facebookLogin=function(appId、appSecret、successCb、errCb){
/*$.get(”https://graph.facebook.com/oauth/access_token?client_id=“+appId+”&client\u secret=“+appSecret+”&grant\u type=client\u凭据”,函数(res){
如果(res.indexOf(“access_token=)!=-1){
successCb(res.replace(“access_token=“,”).trim());
}
否则{
errCb(res);
}
})
*/
var ref=窗口打开(“https://www.facebook.com/dialog/oauth?display=popup&response_type=token&client_id=“+appId+”&重定向_uri=“+”http://anyurlhere.com“,”空白“,”位置=否“;
参考addEventListener(“加载停止”,功能(evt){
if(evt.url.indexOf(“anyurlhere.com”)!=-1){
if(evt.url.indexOf(“#访问令牌”)!=-1){
localStorage.fbToken=evt.url.split(“#access_token=”)[1];
参考关闭();
参考addEventListener(“退出”,函数(){
successCb(localStorage.fbToken);
})
}
}
})
}
var linkedinLogin=函数(appId、appSecret、successCb、errCb){
var ref=窗口打开(“https://www.linkedin.com/oauth/v2/authorization?response_type=code&client_id=“+appId+”&重定向_uri=“+(encodeURI(”http://anyurlhere.com)+“&state=987654321&scope=r_基本配置文件”、“_blank”、“location=no”);
参考addEventListener(“加载停止”,功能(evt){
if(evt.url.indexOf(“anyurlhere.com”)!=-1){
if(evt.url.indexOf(“code=)!=-1){
var code=evt.url.split(“code=)[1];
代码=代码拆分(“&”)[0];
//TODO:获取实际令牌以访问用户配置文件
$.post(”https://www.linkedin.com/oauth/v2/accessToken,{“授权类型”:“授权代码”,“代码”:代码,“重定向uri”:编码uri(“http://anyurlhere.com“,”客户机id“:appId,“客户机机密“:appSecret},函数(数据){
用于(输入数据){
如果(键==“访问\u令牌”){
localStorage.linkedinToken=data[key];
参考关闭();
参考addEventListener(“退出”,函数(){
successCb(localStorage.linkedinToken);
})
}
}
})
}
}
})
}
var googleLogin=函数(appId、appSecret、successCb、errCb){
var ref=窗口打开(“https://accounts.google.com/o/oauth2/v2/auth?response_type=token&client_id=“+appId+”&重定向_uri=“+encodeURI(”http://anyurlhere.com“”“+”&scope=“+encodeURIComponent”(“电子邮件配置文件”)+“&state=profile”、“\u blank”、“location=no”);
参考addEventListener(“加载停止”,功能(evt){
if(evt.url.indexOf(“anyurlhere.com”)!=-1){
if(evt.url.indexOf(“access_token=”)!=-1){
var accessToken=evt.url.split(“access_token=”)[1];
accessToken=accessToken.split(&)[0];
localStorage.gToken=accessToken;
参考关闭();
参考addEventListener(“退出”,函数(){
successCb(localStorage.gToken);
})
}
}
})
}
var getGoogleInfo=函数(successCb,errCb){
//获取基本用户配置文件
$.get(”https://www.googleapis.com/oauth2/v1/userinfo?alt=json&access_token=“+localStorage.gToken,函数(userInfo){
successCb(userInfo);
})
}
var getFacebookInfo=函数(successCb,errCb){
//获取基本用户配置文件名
$.get(”https://graph.facebook.com/me?fields=email,name,picture&access_token=“+localStorage.fbToken,函数(userInfo){
var myInfo={};
if(userInfo.name){
myInfo.name=userInfo.name;
}
如果(userInfo.email){
myInfo.email=userinfo.email;
}
if(userInfo.picture){
myInfo.picture=userInfo.picture.data.url;
}
localStorage.myInfo=JSON.stringify(myInfo);
successCb(myInfo);
//localStorage.myInfo=myInfo;
})
}
//获取链接的基本数据
var getLinkedinInfo=函数(successCb,errCb){
$.ajax({
url:“https://api.linkedin.com/v1/people/~?格式=json“,
标题:{
“授权”:“承载人”+localStorage.linkedinToken
},
成功:函数(userInfo){
var myInfo={};
if(userInfo.firstName&&userInfo.lastName){
myInfo.name=userInfo.firstName+“”+userInfo.lastName;
}
如果(userInfo.headline){
我的