如何导入角度4和弹簧启动的联系人列表?有没有免费的api'?

时间:2018-04-19 09:29:10

标签: angular spring-boot

我想导入Gmail,Yahoo,Hotmail等联系人列表。我在PHP上找到了信息,但我使用的是角4和弹簧启动。他们只涉及其他技术。

1 个答案:

答案 0 :(得分:3)

让我们看看我们将如何做到这一点

  1. 使用我们的Google帐户

  2. 询问我们需要的“范围”

  3. 向谷歌询问用户的联系方式

  4. 使用这些电子邮件做(你必须做的)

  5. 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))
            );
        });
    

    现在您拥有名称的用户邮件列表。就这么简单。

    参考: - Angular 2 (or 4) Import google contacts