我想导入Gmail,Yahoo,Hotmail等联系人列表。我在PHP上找到了信息,但我使用的是角4和弹簧启动。他们只涉及其他技术。
答案 0 :(得分:3)
让我们看看我们将如何做到这一点
使用我们的Google帐户
询问我们需要的“范围”
向谷歌询问用户的联系方式
使用这些电子邮件做(你必须做的)
1 - 导入javascript库
在index.html内部和身体标记的内容
<script async defer src="https://apis.google.com/js/platform.js"></script>
<script async defer src="https://apis.google.com/js/api.js"></script>
2 - 启动您的组件
创建您的组件并开始导入api。在你之外的组件代码:
declare var gapi: any;
然后你必须像这样加载api:
ngAfterViewInit(): void {
setTimeout(() => this.signIn(), 1000);
}
signIn() {
gapi.load('auth2', () => {
this.auth2 = gapi.auth2.init({
client_id: 'YOUR_CLIENT_ID',
cookie_policy: 'single_host_origin',
scope: 'profile email https://www.googleapis.com/auth/contacts.readonly'
});
this.auth2.attachClickHandler(document.getElementById('googleres'), {}, this.onSignIn, this.onFailure);
})
}
setTimeOut的原因只是为了避免在api完全下载之前尝试加载gapi。 1秒似乎已经足够了。
将 YOUR_CLIENT_ID 替换为您在google developper console / web oauth凭据中创建的 。
在这里看到我们现在将我们的按钮链接到我们的google Auth2对象,这意味着当我们点击它时我们将会登录。
3-登录并获取电子邮件
当用户接受这是我们想要做的事情时:
onSignIn = (data: any) => {
setTimeout(() => this.fetchmail(), 1000);
}
data is containing our token
fetchmail() {
gapi.load('client:auth2', () => {
gapi.client.init({
apiKey: 'API_KEY use your own',
discoveryDocs: ['https://people.googleapis.com/$discovery/rest?version=v1'],
clientId: 'YOUR_CLIENT_ID',
scope: 'profile email https://www.googleapis.com/auth/contacts.readonly'
}).then(() => {
return gapi.client.people.people.connections.list({
resourceName:'people/me',
personFields: 'emailAddresses,names'
});
}).then(
(res) => {
//console.log("Res: " + JSON.stringify(res)); to debug
this.userContacts.emit(this.transformToMailListModel(res.result));
},
error => console.log("ERROR " + JSON.stringify(error))
);
});
现在您拥有名称的用户邮件列表。就这么简单。