cordova-plugin-facebook4 を使ってみたところ簡単にできそう
https://github.com/jeduan/cordova-plugin-facebook4.git
v2.3
① まず、facebook のシングルサインオンを使う場合に
facebook のアプリ登録に android の key hashes を設定する必要がある
keytool -exportcert -alias “エイリアス名” -keystore “Keystoreファイルのパス” | openssl sha1 -binary | openssl base64
> keytool -exportcert -alias sampleapp -keystore sampleapp.keystore | openssl sha1 -binary | openssl base64
以下のような文字列が表示される
2Sxvqct/Qq9fRzDlvigsuMyOrds= (適当に記載)
② facebook に登録する
https://developers.facebook.com/
アプリID
1593090350168457
APP_NAME
sampleapp
ANDROID_SDK_VERSION
”” (指定しない)
【Android】
〇 Google Playパッケージ名
com.hogehoge.sampleapp
〇 キーハッシュ
2Sxvqct/Qq9fRzDlvigsuMyOrds=
〇 シングルサインオン
ON にする
【iOS】
〇 バンドルID
com.hogehoge.sampleapp
〇 シングルサインオン
ON にする
※ 設定時、com.hogehoge.sampleappが見つからないなど表示されるが、リリース前なので気にしない
※ 性別や年齢にアクセスしたい場合は facebook に申請を行い認証される必要がある。
テストアカウントだと問題ない。
https://developers.facebook.com/docs/facebook-login/permissions
申請せずに、アクセスできるのは email first_name last_name など少ない
// ===========================================================
// ページを呼び出した時点で呼ばれるようにしている
// ===========================================================
function onPageLoad() {
console.log("onPageLoad() *******************************");
facebookConnectPlugin.getLoginStatus(onStatusSuccess, onStatusFailure)
}
function onStatusSuccess(pData) {
console.log('onStatusSuccess() pData ' + JSON.stringify(pData) );
$("#status").html(JSON.stringify(pData));
}
function onStatusFailure() {
console.log("onStatusFailure () *******************************");
$("#status").html("onStatusFailure");
}
// ===========================================================
// ログイン
// ===========================================================
function onLogin() {
console.log("onLogin () *******************************");
// facebookConnectPlugin.login(['email', 'public_profile'], onLoginSuccess, onLoginFailure);
facebookConnectPlugin.login(null, onLoginSuccess, onLoginFailure);
//facebookConnectPlugin.login(["email"], onLoginSuccess, onLoginFailure);
}
function onLoginSuccess(pData) {
console.log('onLoginSuccess() pData ' + JSON.stringify(pData) );
$("#status").html(JSON.stringify(pData));
/*
facebookConnectPlugin.getAccessToken(function(token) {
console.log("Token: " + token);
}, function(err) {
console.log("Could not get access token: " + err);
});
*/
console.log("" + pData.authResponse.userID);
// facebookConnectPlugin.api('/me?fields=id,email,first_name,last_name,name&access_token=' + pData.authResponse.accessToken, null,
// facebookConnectPlugin.api(pData.authResponse.userID + "/?fields=id,email,first_name,last_name,name", ["email", "public_profile"],
facebookConnectPlugin.api(pData.authResponse.userID + "/?fields=id,email,first_name,last_name,name", null,
function (result) {
alert("Result: " + JSON.stringify(result));
}, function (error) {
alert("Failed: " + JSON.stringify(error));
});
}
function onLoginFailure() {
console.log("onLoginFailure () *******************************");
$("#status").html("onLoginFailure");
}
// ===========================================================
// ログアウト
// ===========================================================
function onLogout() {
console.log("onLogout () *******************************");
facebookConnectPlugin.logout( onLogoutSuccess, onLogoutFailure);
}
function onLogoutSuccess(pData) {
console.log('onLogoutSuccess() pData ' + JSON.stringify(pData) );
$("#status").html(JSON.stringify(pData));
}
function onLogoutFailure() {
console.log("onLogoutFailure () *******************************");
$("#status").html("onLogoutFailure");
}