Мы разрешаем пользователям дополнительно проходить аутентификацию в нашем приложении, используя свои учетные данные Google через oauth.Это работает нормально, однако Google прекращает вызов Google + API, который мы используем, чтобы получить их адрес электронной почты, который будет проблемой для нас.К сожалению, я постарался найти правильный подход для получения электронной почты, поэтому любые предложения будут оценены.
Вот текущий код: var developerKey = 'our key';var clientId = 'наш идентификатор';var scope = ['email'];var oauthToken;
// authorize the current user with Google
function authorizeGoogleUser() {
gapi.auth2.authorize({
'client_id': clientId,
'scope': scope,
'immediate': false
},
handleAuthorizeCallback);
}
// handle callback from the authorization, doing the user lookup if valid
function handleAuthorizeCallback(authResult) {
if (authResult && !authResult.error) {
//save the token and do the user lookup
oauthToken = authResult.access_token;
getGoogleUserDetails();
}
}
// lookup user details, prompting for authentication/permission if needed
function getGoogleUserDetails() {
if (oauthToken == null) {
//authenticate
gapi.load('auth2', { 'callback': authorizeGoogleUser });
}
else {
//already athenticated, so continue to do user lookup
gapi.client.load('plus', 'v1', apiClientLoaded);
}
}
function apiClientLoaded() {
//
// THIS IS THE PORTION THAT NEEDS REDESIGNED AS THIS CALL IS GOING AWAY
//
gapi.client.plus.people.get({ userId: 'me' }).execute(handleGetUserResponse);
}
//do user lookup
function handleGetUserResponse(resp) {
if (resp && resp.emails.length > 0) {
//get primary email address
var primaryEmail;
for (var i = 0; i < resp.emails.length; i++) {
if (resp.emails[i].type === 'account') primaryEmail = resp.emails[i].value;
}
//call server-side method to encrypt email and refresh page
$.ajax({
type: "POST",
url: "OUR URL",
data: "{'emailAddress': '" + primaryEmail + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (retVal) {
if (retVal.d !== '') {
window.location.href = retVal.d;
}
}
});
}
}