2016-12-19 5 views
2

特定の条件が満たされている場合、認証メールを送信するためのルールをAuth0に作成しています。この例を小さくするために、私は検証メールを送信するために使用しているコードを含めました(私は不要なコードを削除しました)。私は次のエラー管理API v2を呼び出してルール内から確認メールを送信するにはどうすればよいですか?

{ statusCode: 400, 
    error: 'Bad Request', 
    message: 'Bad HTTP authentication header format', 
    errorCode: 'Bearer' } 

を取得し、本体に

var url = 'https://myname.au.auth0.com/api/v2/jobs/verification-email'; 
var token = 'Bearer {{token}}'; //This is where the problem is how do I get the token 
var userId = user.user_id; 
request.post({ 
    url: url, 
    headers: { 
    Authorization: 'Bearer {{token}}', 
    }, 
    json: { 
    "user_id": user.user_ID 
    }, 
    timeout: 5000 
}, 
function(err, res, body) { 
    console.log(err); 
    console.log(res); 
}); 

私がアクセストークンまたはヘッダー内のそのような何かに合格する必要がありますね。これをどうやってやるの?

私も次の記事(https://auth0.com/docs/email/custom)を見ましたが、secretTokenは何ですか?

答えて

1

記事の末尾から始まる記事(https://auth0.com/docs/email/custom)は、柔軟性を高め、独自のカスタムメール処理を使用するユーザーを対象としています。その例のsecretTokenは、独自のカスタム電子メールAPIがAuth0から呼び出されたことを検証できる可能性がある、そして非常に単純な方法を説明するためのものです。結論として、それはほぼAPIキーとして機能します。

Auth0で提供されているシステムで確認メールを送信する必要がある場合は、正しいアプローチ(管理API v2)を使用しています。第二の選択肢が始めることが最も簡単でしょうが、中に取るん

  1. Using the client credentials grant
  2. Using the Auth0 Management API v2 Explorer

:あなたは、このAPIを呼び出すことができますトークンを取得するための一つの方法よりも多くを持っていますそのような場合には非推奨通知があることを考慮してください。

トークンを取得したら、それを正しくAPIに渡す必要があります。表示されたコードはサンプルコードのみですが、Bearerスキームを2回、具体的にはvar token = 'Bearer {{token}}';var token = '{{token}}';とし、HTTPヘッダーを作成するときにtoken変数を使用するようにしてください。

0

誤ったトークンを使用すると、別のAPIコールでも同じエラーが発生しました。 {{api-audience}}users/{{user_id}}を呼び出して取得したユーザーのaccess_tokenを使用して問題を再現しました。 A1bCd2efg34IJkl5

クライアントのaccess_tokenこの呼び出しを行うことによって得を使用してみてください:

curl --request POST \ 
    --url https://{{domain}}/oauth/token \ 
    --header 'content-type: application/json' \ 
    --data '{ 
     "client_id":"{{client_id}}", 
     "client_secret":"{{client_secret}}", 
     "audience":"{{audience}}", 
     "grant_type":"client_credentials" 
    }' 

フルJWTなりトークンそれそのトークンは次のようになります。

0

ただ、ユーザーがログインしようとすると、メールがまだ確認されていません、それは魔法のように動作したときに呼び出されるその下の空のルールを作成しました:D

function (user, context, callback) { 
    if (!user.email_verified) { 
     console.log("User is: " + user.user_id); 
     var ManagementClient = require('[email protected]').ManagementClient; 
     var management = new ManagementClient({ 
      token: auth0.accessToken, 
      domain: auth0.domain 
     }); 
     var new_userobj = {user_id:user.user_id}; 
     management.sendEmailVerification(new_userobj,callback(new UnauthorizedError('Please click on the link in the email we have sent you to continue to login.'))); 
    } else { 
     return callback(null, user, context); 
     } 
    } 
関連する問題