Meteor loginWithApple oauth — служба не настроена

Я добавляю учетную запись Apple, последний пакет oauth для присоединения к Meteor, но получаю сообщение об ошибке Служба не настроена. Похоже, что многие решения [another] говорят об использовании ServiceConfiguration для исправления этих ошибок, но у меня не было для инициализации любых других метеорных логинов, таких как loginWithGoogle или loginWithFacebook. Основываясь на моем чтении пакета github, Meteor.loginWithApple настроен так же, как и эти существующие функции входа в систему. Какая проблема с конфигурацией может вызвать это?

Когда я смотрю на Meteor.settings.private.oAuth, apple рядом с google и facebook.

Сначала я установил эти два https://atmospherejs.com/quave/accounts-apple, https://atmospherejs.com/quave/apple-oauth

meteor add quave:accounts-apple
meteor add quave:apple-oauth

Затем настройте config в settings.json вместе с facebook и google oauth в соответствии с этим руководство.

settings.json:

"apple": {
  "teamId": "yyexamplexx",
  "clientId": "com.example.client",
  "keyId": "zzexamplewq",
  "secret": "zxcvsdfasdfexamplezlongstrxcvsdfasdf",
  "redirectUri": "https://example.com/apple-redirect"
},

Клиент:

continueWithApple = () => {
  Meteor.loginWithApple({}, function(err, res) {
    if (err) {
      console.log(err);
    }
    //running ok
  });
};

<Form.Button
  id="appleid-signin"
  fluid
  basic
  className="continue apple"
  data-color="black"
  data-border="true"
  data-type="sign in"
  onClick={() => {
    this.continueWithApple();
  }}
>

person maudulus    schedule 24.07.2020    source источник
comment
Как передать учетные данные "apple" от settings.json к ServiceConfiguration?   -  person Jankapunkt    schedule 28.07.2020


Ответы (1)


По какой-то причине настройки конфигурации oauth не передаются, поэтому нам пришлось сделать что-то вроде следующего, чтобы настроить учетные данные и остановить сообщение об ошибке «Служба не настроена»:

Meteor.startup(() => {

  // remove any existing service so you can configure the latest one
  Accounts.loginServiceConfiguration.remove({ service: "apple" });
  // setup apple login, drawing from your settings.json
  Accounts.loginServiceConfiguration.insert(Meteor.settings.private.oAuth.apple);

...

)}

Наша конфигурация выглядела примерно так:

  "private": {
    "oAuth": {
      "apple": {
        "secret": "-----BEGIN PRIVATE KEY-----\nxyzexamplexyz\n-----END PRIVATE KEY-----",
        "redirectUri": "https://www.example.com/_oauth/apple",
        "clientId": "com.example.client",
        "teamId": "WXYZ8EXAMPLE",
        "keyId": "456EXAMPLE",
        "scope": "name%20email",
        "responseMode": "form_post",
        "responseType": "code",
        "service": "apple"
      }

Кажется, важно, что redirectUri заканчивается на _oauth/apple так как loginWithApple метеора ищет это. Мне вообще не нужно было обрабатывать обратный вызов, об этом позаботятся приведенные ниже пакеты.

meteor add quave:accounts-apple
meteor add quave:apple-oauth

Также важно поместить %20 в область действия name%20email... это только что сработало .

person maudulus    schedule 28.07.2020
comment
@Jankapunkt вот как вы передаете учетные данные - person maudulus; 28.07.2020