Ionic2 Ionic 2:使用链接登录
我正在尝试在我的ionic 2应用程序中使用linked实现登录/注册。出于同样的目的引用此文件。根据文档,必须首先使用OAuth 2.0进行身份验证。为了做到这一点,我在web上找到了几个可以在应用程序浏览器中使用的解决方案。下面是我当前的代码,在单击“登录”按钮时执行Ionic2 Ionic 2:使用链接登录,ionic2,linkedin,Ionic2,Linkedin,我正在尝试在我的ionic 2应用程序中使用linked实现登录/注册。出于同样的目的引用此文件。根据文档,必须首先使用OAuth 2.0进行身份验证。为了做到这一点,我在web上找到了几个可以在应用程序浏览器中使用的解决方案。下面是我当前的代码,在单击“登录”按钮时执行 import { InAppBrowser } from '@ionic-native/in-app-browser'; export class LoginPage { constructor(public navCt
import { InAppBrowser } from '@ionic-native/in-app-browser';
export class LoginPage {
constructor(public navCtrl: NavController ) {}
const browser =
this.iab.create('https://www.linkedin.com/uas/oauth2/authorization?response_type=code&client_id=81zzocd5beagbo&scope=r_basicprofile%20r_emailaddress&state=STATE&redirect_uri=http://localhost:8100&scope=r_fullprofile%20r_emailaddress%20w_share');
browser.show();
}
我现在面临以下问题
public linkedInLogin(): Promise<any> {
return new Promise(function (resolve, reject) {
var browserRef = cordova.InAppBrowser.open("https://www.linkedin.com/oauth/v2/authorization?response_type=code&client_id=XXXXXXXXX&redirect_uri=http://localhost/callback&state=XXXXXXXX&scope=r_basicprofile%20r_emailaddress")
browserRef.addEventListener("loadstart", (event) => {
console.log("event.url 1 -> " + event.url);
if ((event.url).indexOf("http://localhost/callback") === 0) {
browserRef.removeEventListener("exit", (event) => { });
browserRef.close();
console.log("event.url 2 -> " + event.url);
var parsedResponse = {};
var code = (event.url.split("=")[1]).split("&")[0];
var state = event.url.split("=")[2];
if (code !== undefined && state !== null) {
console.log("code : " + code + " state : " + state);
parsedResponse["code"] = code;
//parsedResponse["state"] = state;
resolve(parsedResponse);
} else {
reject("Problem authenticating with LinkedIn");
}
}
});
browserRef.addEventListener("exit", function (event) {
reject("The LinkedIn sign in flow was canceled");
});
});
}
在上面的函数中,用您的替换client_Id和client_Secret
getLinkedInUserDetails(token: string) {
let headers = new Headers({
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Bearer ' + token//,
});
let options = new RequestOptions({
headers: headers,
});
return this.http.get("https://api.linkedin.com/v1/people/~:(id,first-name,last-name,email-address,picture-url)?format=json", options).toPromise()
.then(res => res.json(), err => err);
}
这是一段很长的代码,但我发现这是在ionic 2中使用LinkedIn的最佳方法
希望这个答案有帮助
如果您对上述代码有任何疑问/错误,请告诉我。你好,伊凡,谢谢您的回复。如果我将其用作重定向URL,则会出现错误“应用程序被拒绝,连接被拒绝”。你能告诉我什么是我可以使用的回拨url吗?嗨,瓦桑斯,非常欢迎你。你是否在你的linkedIn开发者帐户上添加了“授权重定向URL”?看看这个链接上的图片:Ya Irfan,我已经这么做了。成功登录后,我收到了此错误和Irfan,您是否在ionic 2或1中使用“cordova.InAppBrowser.open”方法实现了上述代码…为了修复cordova未定义的错误,请执行此操作-->在您的导入语句后粘贴此“declare var cordova:any;”
getLinkedInUserDetails(token: string) {
let headers = new Headers({
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Bearer ' + token//,
});
let options = new RequestOptions({
headers: headers,
});
return this.http.get("https://api.linkedin.com/v1/people/~:(id,first-name,last-name,email-address,picture-url)?format=json", options).toPromise()
.then(res => res.json(), err => err);
}