Twilio SM 两因素身份验证
Posted
技术标签:
【中文标题】Twilio SM 两因素身份验证【英文标题】:Twilio SMs Two factor authentication 【发布时间】:2017-04-14 18:18:56 【问题描述】:我目前正在尝试在我正在使用 twilio 作为 sms 网关服务的项目中实现一个双因素身份验证系统,以请求随机登录令牌,然后将其作为文本消息发送给用户。我按照这里的教程“https://www.twilio.com/blog/2016/05/how-to-send-an-sms-from-android.html”来测试服务。按照教程,我在 Heroku 上托管了后端。该应用程序运行良好,并说短信已发送。但是我从来没有收到它。任何帮助都会很棒。
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import android.content.Context;
import java.io.IOException;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public class MainActivity extends AppCompatActivity
private EditText mTo;
private EditText mBody;
private Button mSend;
private OkHttpClient mClient = new OkHttpClient();
private Context mContext;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTo = (EditText) findViewById(R.id.txtNumber);
mBody = (EditText) findViewById(R.id.txtMessage);
mSend = (Button) findViewById(R.id.btnSend);
mSend.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
try
post(" https://cryptic-shore-79857.herokuapp.com", new
Callback()
@Override
public void onFailure(Call call, IOException e)
e.printStackTrace();
@Override
public void onResponse(Call call, Response response)
throws IOException
runOnUiThread(new Runnable()
@Override
public void run()
mTo.setText("");
mBody.setText("");
Toast.makeText(getApplicationContext(),"SMS Sent!",Toast.LENGTH_SHORT).show();
);
);
catch (IOException e)
e.printStackTrace();
);
mContext = getApplicationContext();
Call post(String url, Callback callback) throws IOException
RequestBody formBody = new FormBody.Builder()
.add("To", mTo.getText().toString())
.add("Body", mBody.getText().toString())
.build();
Request request = new Request.Builder()
.url(url)
.post(formBody)
.build();
Call response = mClient.newCall(request);
response.enqueue(callback);
return response;
我认为连接到 Heroku 的 URL 不正确,但我不知道应该是什么。
【问题讨论】:
您是否在没有应用程序的情况下测试了后端 Heroku 应用程序以确保其正常工作?您可以使用 curl 或 Postman 发送请求。 我使用邮递员测试了有效的 get 函数,但 post 函数没有给我回复@philnash 博客文章中的应用程序只能(据我所知)与 POST 一起工作。你能分享你用来发送消息的后端代码吗? 我正在使用博客中提供的后端。我想在继续之前测试服务的功能。我只是单击了 heroku 按钮将其托管在那里。 据我所知,the app expects aPOST
request。当你向它发出GET
请求时,你真的收到短信了吗?
【参考方案1】:
这里是 Twilio 开发者宣传员。
您 POST
将您的请求发送到错误的 URL。目前您的代码可以:
try
post("https://cryptic-shore-79857.herokuapp.com", new
Callback()
但是发送短信的动作路径应该是:
try
post("https://cryptic-shore-79857.herokuapp.com/sms", new
Callback()
注意,/sms
路径。
让我知道这是否有帮助。
【讨论】:
确实有效,我收到了“已发送短信”消息。但是我从来没有真正收到过短信。问题可能出在我的 twilio 帐户或 heroku 后端。 @philnash 您是否在 heroku 帐户中使用“测试凭据”? 我不是,我只是尝试更改我的 SID 和 Authtoken,但没有更改我从 twilio 收到的号码并且什么也没收到。我应该把电话号码改成我自己的吗? 您需要确保您使用的是 Twilio 的生产凭据。确保将 heroku 环境变量TWILIO_NUMBER
设置为您拥有的 Twilio 号码,该号码可以发送 SMS 消息,并且您已在 Twilio 帐户中验证了您尝试向其发送消息的电话号码。
我已将 SID 和 Authtoken 更改为测试凭据,该号码是我从 twilio 收到的号码,用于向我用于创建帐户的号码发送短信。我仍然没有收到我尝试发送的短信。非常感谢您抽出宝贵的时间帮助我度过难关。以上是关于Twilio SM 两因素身份验证的主要内容,如果未能解决你的问题,请参考以下文章