2017-09-22 11 views
1

サインアップ中に2因子認証を使用するC#を使用してWebアプリケーションを開発しています。私は既にNexmoのAPIを使って2FAを試しました。それは正常に働いた。私がしなければならなかったのは、彼らのAPIを呼び出して、 'to'番号を指定することでした。コードは次のとおりです。Twilio Authy 2FA for OneCode C#実装

public ActionResult Start(string to) 
{ 
    var start = NumberVerify.Verify(new NumberVerify.VerifyRequest 
    { 
     number = to, 
     brand = "NexmoQS" 
    }); 
    Session["requestID"] = start.request_id; 

    return View(); 
} 

今、私はTwilioを試してみることにしました。私はAuthyとそのプロセスに出くわしました。 2FA APIを見つけましたhereしかし、Nexmoで指定されているように、どこに「to」番号を入力すべきか分かりません。私は初心者で、.NET(C#)のコードスニペットを使用しています。コードスニペットは次のとおりです。私がNexmoでできるように、このコードを設定するのを手伝ってください。

public static async Task VerifyPhoneAsync() 
    { 
    // Create client 
    var client = new HttpClient(); 

    // Add authentication header 
    client.DefaultRequestHeaders.Add("X-Authy-API-Key", AuthyAPIKey); 

    // https://api.authy.com/protected/$AUTHY_API_FORMAT/phones/verification/check?phone_number=$USER_PHONE&country_code=$USER_COUNTRY&verification_code=$VERIFY_CODE 
    HttpResponseMessage response = await client.GetAsync("https://api.authy.com/protected/json/phones/verification/check?phone_number=5558675309&country_code=1&verification_code=3043"); 

    // Get the response content. 
    HttpContent responseContent = response.Content; 

    // Get the stream of the content. 
     using (var reader = new StreamReader(await responseContent.ReadAsStreamAsync())) 
     { 
     // Write the output. 
     Console.WriteLine(await reader.ReadToEndAsync()); 
     } 
    } 

彼らは彼らのAPI hereのcURLの実装を与えている、私はC#でそれを設定助けてください。

curl "http://api.authy.com/protected/json/users/new?api_key=d57d919d11e6b221c9bf6f7c882028f9" \ 
-d user[email]="[email protected]" \ 
-d user[cellphone]="317-338-9302" \ 
-d user[country_code]="54" 
+0

このコードを実行するとどうなりますか?エラーはありますか?あなたはAPIからどんな反応を得ますか? –

+0

これを実行することができません。「AuthyAPIKey」を見つけることができません。 –

+0

それは何ですか? – Andy

答えて

1

ここではTwilioの開発者のエバンジェリストです。

APIを呼び出すときには、X-Authy-API-KeyヘッダーとURLパラメータapi_keyを追加する必要があります。また、番号を確認するプロセスを開始するには、APIに送信する必要のあるデータをPOSTリクエストする必要があります。

The two bits of data that you need are the phone number and the country code for that phone number。認証コード(via SMSまたはコール)を送信する方法など、他の値を設定することもできますが、

私はこのように見えるようにコードを更新します:

public static async Task StartVerifyPhoneAsync() 
    { 
    // Create client 
    var client = new HttpClient(); 

    var AuthyAPIKey = 'YOUR AUTHY API KEY'; 

    // Add authentication header 
    client.DefaultRequestHeaders.Add("X-Authy-API-Key", AuthyAPIKey); 

    var values = new Dictionary<string, string> 
    { 
     { "phone_number", "PHONE NUMBER TO VERIFY" }, 
     { "country_code", "COUNTRY CODE FOR PHONE NUMBER" } 
    }; 

    var content = new FormUrlEncodedContent(values); 

    var url = $"https://api.authy.com/protected/json/phones/verification/start?api_key={AuthyAPIKey}"; 

    HttpResponseMessage response = await client.PostAsync(url, content); 

    // do something with the response 
    } 

ユーザーがコードを入力するときに、あなたはそれをチェックする必要があります。再度APIキーをヘッダーとして追加し、電話番号、国コード、ユーザーが入力した認証コード(このときはGETリクエスト)とともにURLパラメーターとして送信する必要があります。

public static async Task CheckVerifyPhoneAsync() 
    { 
    // Create client 
    var client = new HttpClient(); 

    var AuthyAPIKey = 'YOUR AUTHY API KEY'; 

    // Add authentication header 
    client.DefaultRequestHeaders.Add("X-Authy-API-Key", AuthyAPIKey); 

    var phone_number = "PHONE NUMBER TO VERIFY"; 
    var country_code = "COUNTRY CODE FOR PHONE NUMBER"; 
    var verification_code = "THE CODE ENTERED BY THE USER"; 
    var url = $"https://api.authy.com/protected/json/phones/verification/start?api_key={AuthyAPIKey}&phone_number={phone_number}&country_code={country_code}&verification_code={verification_code}"; 

    HttpResponseMessage response = await client.GetAsync(url); 

    // do something with the response 
    } 

それがまったく役に立ったら教えてください。

関連する問題