├── .all-contributorsrc
├── .babelrc
├── .github
├── FUNDING.yml
├── ISSUE_TEMPLATE
│ ├── bug_report.md
│ └── feature_request.md
├── PULL_REQUEST_TEMPLATE.md
└── workflows
│ ├── codeql.yml
│ ├── comment-issue.yml
│ └── lint.yml
├── .gitignore
├── .versions
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── community-services
├── angellist.js
├── apple.js
├── betapass.js
├── discord.js
├── dropbox.js
├── edmodo.js
├── instagram.js
├── line.js
├── linkedin.js
├── mailru.js
├── office365.js
├── ok.js
├── qq.js
├── seznam.js
├── slack.js
├── soundcloud.js
├── spotify.js
├── twitch.js
├── venmo.js
├── vk.js
├── web3.js
└── wechat.js
├── core-services
├── facebook.js
├── github.js
├── google.js
├── meetup.js
├── meteor_developer.js
├── twitter.js
└── weibo.js
├── example
├── .meteor
│ ├── .finished-upgraders
│ ├── .gitignore
│ ├── .id
│ ├── cordova-plugins
│ ├── packages
│ ├── platforms
│ ├── release
│ └── versions
├── README.md
├── example.html
└── example.js
├── link_accounts_client.js
├── link_accounts_server.js
├── package-lock.json
├── package.js
└── package.json
/.all-contributorsrc:
--------------------------------------------------------------------------------
1 | {
2 | "projectName": "template-package",
3 | "projectOwner": "Meteor-Community-Packages",
4 | "repoType": "github",
5 | "repoHost": "https://github.com",
6 | "files": [
7 | "README.md"
8 | ],
9 | "imageSize": 100,
10 | "commit": true,
11 | "commitConvention": "eslint",
12 | "contributors": [
13 | {
14 | "login": "yubozhao",
15 | "name": "Yu Bozhao",
16 | "profile": "https://github.com/yubozhao",
17 | "avatar_url": "https://avatars1.githubusercontent.com/u/670949?s=460&v=4",
18 | "contributions": [
19 | "code",
20 | "doc",
21 | "maintenance"
22 | ]
23 | },
24 | {
25 | "login": "StorytellerCZ",
26 | "name": "Jan Dvorak",
27 | "avatar_url": "https://avatars2.githubusercontent.com/u/1715235?v=4",
28 | "profile": "https://github.com/StorytellerCZ",
29 | "contributions": [
30 | "code",
31 | "doc",
32 | "maintenance"
33 | ]
34 | },
35 | {
36 | "login": "jankapunkt",
37 | "name": "Jan Küster",
38 | "avatar_url": "https://avatars.githubusercontent.com/u/1135285?v=4",
39 | "profile": "https://jankuester.com/",
40 | "contributions": [
41 | "maintenance"
42 | ]
43 | }
44 | ],
45 | "contributorsPerLine": 7
46 | }
47 |
--------------------------------------------------------------------------------
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | [
4 | "@babel/preset-env",
5 | {
6 | "shippedProposals": true,
7 | "useBuiltIns": "usage",
8 | "corejs": "3"
9 | }
10 | ]
11 | ]
12 | }
13 |
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | github: [StorytellerCZ]
2 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: ''
5 | labels: bug
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Describe the bug**
11 |
12 | A clear and concise description of what the bug is.
13 |
14 | **To Reproduce**
15 |
16 | Steps to reproduce the behavior:
17 | 1. Go to '...'
18 | 2. Click on '....'
19 | 3. Scroll down to '....'
20 | 4. See error
21 |
22 | **Expected behavior**
23 |
24 | A clear and concise description of what you expected to happen.
25 |
26 | **Screenshots**
27 |
28 | If applicable, add screenshots to help explain your problem.
29 |
30 | **Versions (please complete the following information):**
31 | - Meteor version: [e.g. 1.8.2]
32 | - Browser: [e.g. firefox, chrome, safari]
33 | - Version: [e.g. 1.0.0]
34 |
35 | **Additional context**
36 |
37 | Add any other context about the problem here.
38 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: ''
5 | labels: enhancement
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Is your feature request related to a problem? Please describe.**
11 |
12 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
13 |
14 | **Describe the solution you'd like**
15 |
16 | A clear and concise description of what you want to happen.
17 |
18 | **Describe alternatives you've considered**
19 |
20 | A clear and concise description of any alternative solutions or features you've considered.
21 |
22 | **Additional context**
23 |
24 | Add any other context or screenshots about the feature request here.
25 |
--------------------------------------------------------------------------------
/.github/PULL_REQUEST_TEMPLATE.md:
--------------------------------------------------------------------------------
1 |
10 |
11 |
14 | ## What
15 |
16 |
17 | ## Why
18 |
19 |
20 |
--------------------------------------------------------------------------------
/.github/workflows/codeql.yml:
--------------------------------------------------------------------------------
1 | name: "CodeQL"
2 |
3 | on:
4 | push:
5 | branches: [ "master" ]
6 | pull_request:
7 | branches: [ "master" ]
8 | schedule:
9 | - cron: "15 15 * * 2"
10 |
11 | jobs:
12 | analyze:
13 | name: Analyze
14 | runs-on: ubuntu-latest
15 | permissions:
16 | actions: read
17 | contents: read
18 | security-events: write
19 |
20 | strategy:
21 | fail-fast: false
22 | matrix:
23 | language: [ javascript ]
24 |
25 | steps:
26 | - name: Checkout
27 | uses: actions/checkout@v3
28 |
29 | - name: Initialize CodeQL
30 | uses: github/codeql-action/init@v2
31 | with:
32 | languages: ${{ matrix.language }}
33 | queries: +security-and-quality
34 |
35 | - name: Autobuild
36 | uses: github/codeql-action/autobuild@v2
37 |
38 | - name: Perform CodeQL Analysis
39 | uses: github/codeql-action/analyze@v2
40 | with:
41 | category: "/language:${{ matrix.language }}"
42 |
--------------------------------------------------------------------------------
/.github/workflows/comment-issue.yml:
--------------------------------------------------------------------------------
1 | name: Add immediate comment on new issues
2 |
3 | on:
4 | issues:
5 | types: [opened]
6 |
7 | jobs:
8 | createComment:
9 | runs-on: ubuntu-latest
10 | steps:
11 | - name: Create Comment
12 | uses: peter-evans/create-or-update-comment@v1.4.2
13 | with:
14 | issue-number: ${{ github.event.issue.number }}
15 | body: |
16 | Thank you for submitting this issue!
17 |
18 | We, the Members of Meteor Community Packages take every issue seriously.
19 | Our goal is to provide long-term lifecycles for packages and keep up
20 | with the newest changes in Meteor and the overall NodeJs/JavaScript ecosystem.
21 |
22 | However, we contribute to these packages mostly in our free time.
23 | Therefore, we can't guarantee you issues to be solved within certain time.
24 |
25 | If you think this issue is trivial to solve, don't hesitate to submit
26 | a pull request, too! We will accompany you in the process with reviews and hints
27 | on how to get development set up.
28 |
29 | Please also consider sponsoring the maintainers of the package.
30 | If you don't know who is currently maintaining this package, just leave a comment
31 | and we'll let you know
32 |
--------------------------------------------------------------------------------
/.github/workflows/lint.yml:
--------------------------------------------------------------------------------
1 | name: "Lint test"
2 |
3 | on:
4 | push:
5 | branches: [ "master" ]
6 | pull_request:
7 | branches: [ "master" ]
8 |
9 | jobs:
10 | app:
11 | name: "Lint checking app"
12 | runs-on: ubuntu-latest
13 | steps:
14 | - uses: actions/checkout@v4
15 | - uses: actions/setup-node@v4
16 | with:
17 | node-version: '20'
18 | - name: Install dependencies
19 | run: npm ci
20 | - name: Run lint
21 | run: npm run lint-test-ci
22 |
23 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 | # IntelliJ project files
3 | .idea
4 | *.iml
5 | out
6 | gen
7 |
--------------------------------------------------------------------------------
/.versions:
--------------------------------------------------------------------------------
1 | accounts-base@3.0.1
2 | accounts-oauth@1.4.5
3 | allow-deny@2.0.0
4 | babel-compiler@7.11.0
5 | babel-runtime@1.5.2
6 | base64@1.0.13
7 | binary-heap@1.0.12
8 | boilerplate-generator@2.0.0
9 | bozhao:link-accounts@3.0.1
10 | callback-hook@1.6.0
11 | check@1.4.2
12 | core-runtime@1.0.0
13 | ddp@1.4.2
14 | ddp-client@3.0.1
15 | ddp-common@1.4.4
16 | ddp-rate-limiter@1.2.2
17 | ddp-server@3.0.1
18 | diff-sequence@1.1.3
19 | dynamic-import@0.7.4
20 | ecmascript@0.16.9
21 | ecmascript-runtime@0.8.2
22 | ecmascript-runtime-client@0.12.2
23 | ecmascript-runtime-server@0.11.1
24 | ejson@1.1.4
25 | facts-base@1.0.2
26 | fetch@0.1.5
27 | geojson-utils@1.0.12
28 | id-map@1.2.0
29 | inter-process-messaging@0.1.2
30 | localstorage@1.2.1
31 | logging@1.3.5
32 | meteor@2.0.1
33 | minimongo@2.0.1
34 | modern-browsers@0.1.11
35 | modules@0.20.1
36 | modules-runtime@0.13.2
37 | mongo@2.0.1
38 | mongo-decimal@0.1.4-beta300.7
39 | mongo-dev-server@1.1.1
40 | mongo-id@1.0.9
41 | npm-mongo@4.17.4
42 | oauth@3.0.0
43 | ordered-dict@1.2.0
44 | promise@1.0.0
45 | random@1.2.2
46 | rate-limit@1.1.2
47 | react-fast-refresh@0.2.9
48 | reactive-var@1.0.13
49 | reload@1.3.2
50 | retry@1.1.1
51 | routepolicy@1.1.2
52 | service-configuration@1.3.5
53 | socket-stream-client@0.5.3
54 | tracker@1.3.4
55 | typescript@5.4.3
56 | underscore@1.6.4
57 | url@1.3.3
58 | webapp@2.0.1
59 | webapp-hashing@1.1.2
60 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Changelog
2 |
3 | ## v. 3.0.1
4 | * Fix a wrong if statement in the Seznam connector
5 |
6 | ## v. 3.0.0
7 | * Removed deprecated providers
8 | * Minimum support version is Meteor 3.0
9 |
10 | ## v. 2.9.0
11 | * Added `storyteller:accounts-seznam`
12 |
13 | ## v. 2.8.0
14 | * More async calls have been added through the codebase
15 | * Minimum Meteor version is `2.9.11`
16 | * Deprecated `lichthagel:accounts-discord` which will be removed in v3
17 | * Betapass client preview added
18 | * Supports Meteor 3 `alpha-15`
19 |
20 | ## v. 2.7.1-alpha.1 - 23.8.2023
21 | * Added build target for Meteor 3 `alpha.11`
22 | * Updated npm dev dependencies
23 |
24 | ## v. 2.7.0 - 13.8.2023
25 | * Added `storyteller:accounts-discord` as a new version for Discord connector
26 | * Added new build target for Meteor v 2.9.1
27 | * Add re-tries for popup closures in `tryLinkAfterPopupClosed` to mirror Meteor login behavior and fix issues when `credentialSecret` is not set fast enough
28 |
29 | ## v. 2.6.1 - 11.5.2022
30 | * Fixes for web3 login to keep up with change in `freedombase:web3-login`
31 |
32 | ## v. 2.6.0 - 10.5.2022
33 | * Added `freedombase:web3-login`
34 | * Slight code re-format for better readability
35 |
36 | ## v. 2.5.0 - 9.5.2022
37 | * Make hooks stoppable
38 | * Fix commit script
39 | * Added Apple provider for `quave:accounts-apple` or `bigowl:accounts-apple` package
40 |
41 | ## v. 2.4.1 - 10.11.2021
42 | * Upgrade eslint-parser
43 | * Fix wrong uppercase in the word `linkedIn` for `pauli:linkedin-oauth`
44 |
45 | ## v. 2.4.0 - 24.6.2021
46 |
47 | * Updated dependencies
48 | * Compatibility update for Meteor 2.3
49 |
50 | ## v. 2.3.2 - 8.2.2021
51 | * Fix bugs in MS Office connector
52 |
53 | ## v. 2.3.1 - 8.2.2021
54 | * Fix a detection bug in MS Office connector
55 |
56 | ## v. 2.3.0 - 29.1.2021
57 | * Added extra check on linking accounts and made connection errors provide a bit more information
58 | * Updated development dependencies
59 | * Add support for MS Office 365 logins via `lindoelio:accounts-office365` and `ermlab:accounts-office365`
60 |
61 | ## v. 2.2.1 - 6.9.2020
62 | * Fix Meteor Developer Accounts link
63 |
64 | ## v. 2.2.0 - 2.9.2020
65 | * Updated example to Meteor 1.10.2
66 | * Bumped minimum required version of Meteor to 1.4.3
67 | * Add missing imports
68 | * Fix code to adhere to StandardJS
69 | * Add hooks (`Accounts.onLink`, `Accounts.beforeLink`, `Accounts.onUnlink`)
70 |
71 | ## v. 2.1.1 - 28.4.2020
72 | * Fix error in Discord connector
73 | * Format changelog
74 | * Added GitHub settings & legal stuff
75 |
76 | ## v. 2.1.0 - 18.09.2019
77 | * `jonperl:linkedin` has been deprecated in favor of `pauli:linkedin-oauth` in order to keep up with changes in LinkedIn API. You will see a depracetion warning in your app for this. The old package will work, but will be removed in future releases.
78 |
79 | ## v. 2.0.2
80 | * Fix unlinked accounts method
81 | * Fix missing imports
82 | * Fix minimum required Meteor version to v 1.3
83 |
84 | ## v. 2.0.0
85 | * Modernize package to use with `ecmascript` package
86 | * Drop `underscore`
87 | * LINE support
88 |
89 | ## v. 1.2.0
90 | * unlink accounts
91 | * linkedin support
92 |
--------------------------------------------------------------------------------
/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Meteor Community Code of Conduct
2 |
3 | ### Community
4 |
5 | We want to build a productive, happy and agile community that welcomes new ideas, constantly looks for areas to improve, and fosters collaboration.
6 |
7 | The project gains strength from a diversity of backgrounds and perspectives in our contributor community, and we actively seek participation from those who enhance it. This code of conduct exists to lay some ground rules that ensure we can collaborate and communicate effectively, despite our diversity. The code applies equally to founders, team members and those seeking help and guidance.
8 |
9 | ### Using This Code
10 |
11 | This isn’t an exhaustive list of things that you can’t do. Rather, it’s a guide for participation in the community that outlines how each of us can work to keep Meteor a positive, successful, and growing project.
12 |
13 | This code of conduct applies to all spaces managed by the Meteor Community project. This includes GitHub issues, and any other forums created by the team which the community uses for communication. We expect it to be honored by everyone who represents or participates in the project, whether officially or informally.
14 |
15 | #### When Something Happens
16 |
17 | If you see a Code of Conduct violation, follow these steps:
18 |
19 | * Let the person know that what they did is not appropriate and ask them to stop and/or edit their message(s).
20 | * That person should immediately stop the behavior and correct the issue.
21 | * If this doesn’t happen, or if you’re uncomfortable speaking up, contact admins.
22 | * As soon as available, an admin will join, identify themselves, and take further action (see below), starting with a warning, then temporary deactivation, then long-term deactivation.
23 |
24 | When reporting, please include any relevant details, links, screenshots, context, or other information that may be used to better understand and resolve the situation.
25 |
26 | The Admin team will prioritize the well-being and comfort of the recipients of the violation over the comfort of the violator.
27 |
28 | If you believe someone is violating the code of conduct, please report it to any member of the governing team.
29 |
30 | ### We Strive To:
31 |
32 | - **Be open, patient, and welcoming**
33 |
34 | Members of this community are open to collaboration, whether it's on PRs, issues, or problems. We're receptive to constructive comment and criticism, as we value what the experiences and skill sets of contributors bring to the project. We're accepting of all who wish to get involved, and find ways for anyone to participate in a way that best matches their strengths.
35 |
36 | - **Be considerate**
37 |
38 | We are considerate of our peers: other Meteor users and contributors. We’re thoughtful when addressing others’ efforts, keeping in mind that work is often undertaken for the benefit of the community. We also value others’ time and appreciate that not every issue or comment will be responded to immediately. We strive to be mindful in our communications, whether in person or online, and we're tactful when approaching views that are different from our own.
39 |
40 | - **Be respectful**
41 |
42 | As a community of professionals, we are professional in our handling of disagreements, and don’t allow frustration to turn into a personal attack. We work together to resolve conflict, assume good intentions and do our best to act in an empathic fashion.
43 |
44 | We do not tolerate harassment or exclusionary behavior. This includes, but is not limited to:
45 | - Violent threats or language directed against another person.
46 | - Discriminatory jokes and language.
47 | - Posting sexually explicit or sexualized content.
48 | - Posting content depicting or encouraging violence.
49 | - Posting (or threatening to post) other people's personally identifying information ("doxing").
50 | - Personal insults, especially those using racist or sexist terms.
51 | - Unwelcome sexual attention.
52 | - Advocating for, or encouraging, any of the above behavior.
53 | - Repeated harassment of others. In general, if someone asks you to stop, then stop.
54 |
55 | - **Take responsibility for our words and our actions**
56 |
57 | We can all make mistakes; when we do, we take responsibility for them. If someone has been harmed or offended, we listen carefully and respectfully. We are also considerate of others’ attempts to amend their mistakes.
58 |
59 | - **Be collaborative**
60 |
61 | The work we produce is (and is part of) an ecosystem containing several parallel efforts working towards a similar goal. Collaboration between teams and individuals that each have their own goal and vision is essential to reduce redundancy and improve the quality of our work.
62 |
63 | Internally and externally, we celebrate good collaboration. Wherever possible, we work closely with upstream projects and others in the free software community to coordinate our efforts. We prefer to work transparently and involve interested parties as early as possible.
64 |
65 | - **Ask for help when in doubt**
66 |
67 | Nobody is expected to be perfect in this community. Asking questions early avoids many problems later, so questions are encouraged, though they may be directed to the appropriate forum. Those who are asked should be responsive and helpful.
68 |
69 | - **Take initiative**
70 |
71 | We encourage new participants to feel empowered to lead, to take action, and to experiment when they feel innovation could improve the project. If we have an idea for a new tool, or how an existing tool can be improved, we speak up and take ownership of that work when possible.
72 |
73 | ### Attribution
74 |
75 | This Code of Conduct was inspired by [Meteor CoC](https://github.com/meteor/meteor/blob/devel/CODE_OF_CONDUCT.md).
76 |
77 | Sections of this Code of Conduct were inspired in by the following Codes from other open source projects and resources we admire:
78 |
79 | - [The Contributor Covenant](http://contributor-covenant.org/version/1/4/)
80 | - [Python](https://www.python.org/psf/codeofconduct/)
81 | - [Ubuntu](http://www.ubuntu.com/about/about-ubuntu/conduct)
82 | - [Django](https://www.djangoproject.com/conduct/)
83 |
84 | *This Code of Conduct is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/) license. This Code was last updated on March 12, 2019.*
85 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # How to contribute to this repository
2 | [Read more about submitting a contribution.](https://opensource.guide/how-to-contribute/#how-to-submit-a-contribution)
3 |
4 | ## Getting started
5 |
6 | ### Clone the repository to your account
7 |
8 | ### Setup
9 | * Run `meteor npm i` to get npm dependencies.
10 |
11 | ### Make changes & test
12 | * Make your changes.
13 | * Run tests via `npm run test` & test your implementation.
14 | * If everything is green commit and push.
15 | * Submit pull request
16 |
17 | [Read more about how to properly open a pull request.](https://opensource.guide/how-to-contribute/#opening-a-pull-request)
18 |
19 | ## Miscellaneous stuff beyond your contribution
20 |
21 | ## Add contributor mention
22 | If this is your first time contributing to this repository or your contribution is of different type from your previous contribution, don't forget to use [All Contributors Bot](https://allcontributors.org/docs/en/bot/usage) to make your contribution listed.
23 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2015-present Meteor Community
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Meteor Link Accounts
2 |
3 | [](https://www.repostatus.org/#active)
4 |
5 | A [Meteor package](https://atmospherejs.com/bozhao/link-accounts) designed to links social network accounts without any hassles.
6 |
7 | ## Goals
8 | * Link additional social network accounts.
9 | * Don't modify any Meteor core packages.
10 | * Don't force users to add additional Meteor packages that they are not going to use.
11 |
12 | ## Install
13 | Install in Meteor with:
14 |
15 | ```bash
16 | meteor add bozhao:link-accounts
17 | ```
18 |
19 | ## Usage
20 | ### Client side
21 | #### Meteor.linkWith[ServiceName](options, callback)
22 | You will call this on the page where you allow your users to connect to other services. This method will be triggered after they click the appropriate connect button.
23 |
24 | `options` is expecting configuration object. Most often that is going to be: `{ loginStyle: 'popup' }`
25 |
26 | ##### `freedombase:web3-login`
27 | The `options` object accepts `linkMessage` key where you can set message for signature.
28 |
29 | ### Server side
30 | #### Accounts.unlinkService(userId, serviceName)
31 | Given the `userId` and the name of the service (`serviceName`) as it is named in the user document (most often lower case name of the service).
32 |
33 | ### Hooks
34 | There are 3 hooks available to you on the server at various time during the link process. All are triggered on the server side.
35 | #### Accounts.beforeLink
36 | Called before user account is linked with service. The hook will receive object with the following parameters:
37 | * `type` - service name
38 | * `serviceData` - data received from the service provider
39 | * `user` - current user object
40 | * `serviceOptions` - options that were used to call the service
41 |
42 | If you return false the linking will be interrupted.
43 |
44 | #### Accounts.onLink
45 | Called after user has been linked with a service. The hook will receive object with the following parameters:
46 | * `type` - service name
47 | * `serviceData` - data received from the service provider
48 | * `user` - updated user object
49 | * `serviceOptions` - options that were used to call the service
50 |
51 | #### Accounts.onUnlink
52 | Called after user is unlinking the service. The hook will receive object with the following parameters:
53 | * `type` - service name that was unlinked
54 | * `user` - user object before unlinking
55 |
56 | ## Design notes:
57 | 1. Piggyback on existing Meteor oauth login system. Use login handler.
58 |
59 | 2. We do not allow link different account from same service for now. For example, you
60 | could not link with 2 different Github accounts.
61 |
62 | 3. Save the linked service info on user.services, instead of creating new field
63 | on user object. This allows user logins the application from linked services.
64 |
65 | 4. Don't create a temporary user account and then merge it.
66 |
67 | ## Support Accounts Package
68 |
69 | ### Official packages
70 | * accounts-meteor-developer
71 | * accounts-github
72 | * accounts-facebook
73 | * accounts-google
74 | * accounts-twitter
75 | * accounts-meetup
76 | * accounts-weibo
77 |
78 | ### Community packages
79 | * btafel:accounts-facebook-cordova
80 | * bozhao:accounts-instagram
81 | * mrt:accounts-vk
82 | * mikepol:accounts-ok
83 | * mikepol:accounts-mailru
84 | * pauli:linkedin-oauth
85 | * garbolino:accounts-soundcloud
86 | * alexbeauchemin:accounts-twitch
87 | * nicolaiwadstrom:meteor-angellist
88 | * acemtp:meteor-slack
89 | * xinranxiao:meteor-spotify
90 | * gcampax:accounts-dropbox
91 | * pcooney10:accounts-venmo
92 | * leonzhang1109:accounts-wechat
93 | * leonzhang1109:accounts-qq
94 | * storyteller:accounts-line
95 | * lindoelio:accounts-office365 / ermlab:accounts-office365
96 | * quave:accounts-apple / bigowl:accounts-apple
97 | * freedombase:web3-login
98 | * storyteller:accounts-discord
99 |
100 | ## License
101 | MIT
102 |
103 | ## Contributors
104 |
105 |
106 |
107 |
108 |