MeteorでGitHubアカウントと連携する方法(github-accounts) の手順で連携した GitHub アカウント情報には Email 情報が含まれていませんでした。
いろいろ調査した結果、GitHub アカウントから Email 情報を取得する方法がわかりましたので、その方法を以下で解説します。
なお、Meteor と GitHub との連携方法については、前の記事をご参照ください。
GitHubアカウントから Email 情報を取得する方法
1. bruz:github-api パッケージを追加する
bash$
meteor add bruz:github-api
2. client/lib ディレクトリと server/lib ディレクトリを作成
bash$
mkdir -p client/lib server/lib
3. GitHub ログイン時に Email を取得するコードを追加
client/lib/accounts.js
Accounts.ui.config({
requestPermissions: {
github: ['user:email']
}
});
server/lib/accounts.server.js
Accounts.onLogin(function(info) {
var user = info.user;
if(user) {
var github = new GitHub({
version: "3.0.0", // required
timeout: 5000 // optional
});
github.authenticate({
type: "oauth",
token: user.services.github.accessToken
});
try {
var result = github.user.getEmails({user: user.services.github.username});
var email = _(result).findWhere({primary: true});
Meteor.users.update({
_id: user._id
},
{
$set: {
'profile.email': email.email,
'services.github.email': email.email
}
})
}
catch(e) {
console.log(e.message);
}
}
});
4. Email を表示するためのコードをテンプレートに追加
テンプレートファイルの好きな場所に以下のコードを追加します。
app.html
{{#if currentUser}}
<h2>Email: {{currentUser.profile.email}}</h2>
{{/if}}
5. Meteor アプリにアクセスし、GitHub アカウントでログインする
bash$
meteor
で Meteor アプリケーションを起動したら、ブラウザで http://localhost:3000/ にアクセスします。
その後 GitHub アカウントでログインをすると、Email 情報が取得できます。
すでにログインをしている場合は、一度ログアウトし、再度ログインを試してみてください。