2016-01-30 3 views
0

Предполагая, что я хочу создать пользователей после авторизации приложения, как бы я захватил их электронную почту во время обратного вызова onAuth ...? Похоже, обратный вызов предполагает, что пользователь уже вошел в систему. Я правильно об этом думаю?meteor-shopify Создание пользователя/Логин после обратного вызова Auth

Я заметил, что при установке Fishbowl Prizes app после авторизации я могу щелкнуть вкладку учетных записей и увидеть, что вся моя информация о учетной записи предварительно заполнена из моей учетной записи магазина (имя, адрес электронной почты, адрес и т. Д.).

ответ

1

Я не уверен, должен ли я идти по заголовку или контенту сообщения с точки зрения ответа на ваш вопрос, поэтому я предоставлю очень простой пример того, как получить информацию от API и сделать что-то с этим здесь.

Я предоставил более глубокий ответ, связанные специально для захвата деталей из API для создания учетной записи пользователя здесь:. https://github.com/froatsnook/meteor-shopify/issues/15#issuecomment-177413630

Похоже, обратный вызов предполагает, что пользователь уже вошел в

Параметр userId не определен, если пользователя нет. Если вашим операциям onAuth ничего не нужно делать с пользователем, вы можете просто оставить его вне параметров. В вашем случае, вы просто хотите, чтобы справиться с этим условно с использованием if/else блок:

if(!userId){ 
    // do stuff 
} else { 
    // do other stuff 
} 

На к примеру захватывая эти детали из API:

Вся информация заполняемых вы видите, доступный с Shopify API in the shop object. У вас уже есть токен доступа, когда вызываются обратные вызовы onAuth, поэтому вы можете просто взять его из API сразу после того, как вы вставили Keyset магазина.

Для простоты в этом примере мы предположим, что пользователь уже существует и входит в систему. На вашем обратном вызове onAuth (после того, как вы вставили ключ), вы можете сделать что-то вроде этого, чтобы добавить эти поля для пользователя profile объекта:

Shopify.onAuth(function(access_token, authConfig, userId) { 
    var shopUUID = uuid.new(); // Not secure to name keyset same as the shop! 
    Shopify.addKeyset(shopUUID, { 
    access_token: access_token 
    }); 

    var api = new Shopify.API({ 
    shop: authConfig.shop, 
    keyset: shopUUID 
    }); 
    // get the Shop object from the API 
    var shopObj = api.getShop(); 
    var userInfo = { 
    'profile.name': shopObj.shop_owner, 
    'profile.email': shopObj.email, 
    'profile.phone': shopObj.phone, 
    'profile.shopName': shopObj.name 
    }; 
    Meteor.users.update({_id: userId}, {$set: userInfo}) 
}); 

Затем вы можете использовать их в шаблонах, как это:

{{currentUser.profile.name}} или {{currentUser.profile.email}}

или в функциях л икэ так:

var realName = Meteor.user().profile.name

или

var userEmail = Meteor.user().profile.email и т.д.

Для дополнительной информации об использовании этих данных для создания пользователей, см моего объяснения здесь: https://github.com/froatsnook/meteor-shopify/issues/15#issuecomment-177413630

Смежные вопросы