使用Google账户登录的实现代码

Gemfile为:

gem 'ruby-openid'
gem 'rack-openid'

 sessions_controller.rb的代码:

class SessionsController < ApplicationController

  def new
    flash[:returnurl] = params[:returnurl] if params[:returnurl]
    response.headers['WWW-Authenticate'] = Rack::OpenID.build_header( #build身份验证header,跳转到OpenID认证url
        :identifier => "https://www.google.com/accounts/o8/id", #这里hard code了Google的OpenID url,测试后会加上别的如新浪围脖/豆瓣等
        :required => ["http://axschema.org/contact/email"], #返回OpenID帐号的email
        :return_to => sessions_url, #返回为post create action
        :method => 'POST')
    head 401 #状态码为401
  end

  def create
    if openid = request.env[Rack::OpenID::RESPONSE]
      case openid.status
      when :success
        ax = OpenID::AX::FetchResponse.from_success_response(openid)
        identify_url = openid.display_identifier
        email = ax.get_single('http://axschema.org/contact/email') # 得到OpenID帐号的email
        user = User.where(:email => email).first || User.new
        user.email = email
        user.identify_url = identify_url
        log_in(user)
        redirect_to(flash[:returnurl] || root_path)
      when :failure
        render :action => 'problem'
      end
    else
      redirect_to new_session_path
    end
  end

end
 
实现 Android Studio 账户密码验证登录功能可以使用 Firebase Authentication(Firebase 认证)服务。下面是一个简单的示例代码: 1. 在 Firebase 控制台中创建一个新项目,并启用 Firebase Authentication 服务。 2. 在 Android Studio 中添加 Firebase 依赖库和插件。 3. 在应用程序的 build.gradle 文件中添加以下依赖: ``` implementation 'com.google.firebase:firebase-auth:19.4.0' ``` 4. 在 LoginActivity 中添加以下代码: ```java public class LoginActivity extends AppCompatActivity { private EditText mUsernameEditText; private EditText mPasswordEditText; private FirebaseAuth mAuth; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); mAuth = FirebaseAuth.getInstance(); mUsernameEditText = findViewById(R.id.username_edit_text); mPasswordEditText = findViewById(R.id.password_edit_text); Button loginButton = findViewById(R.id.login_button); loginButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String email = mUsernameEditText.getText().toString(); String password = mPasswordEditText.getText().toString(); mAuth.signInWithEmailAndPassword(email, password) .addOnCompleteListener(LoginActivity.this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { // 登录成功 Toast.makeText(LoginActivity.this, "登录成功", Toast.LENGTH_SHORT).show(); // 跳转到主界面 Intent intent = new Intent(LoginActivity.this, MainActivity.class); startActivity(intent); finish(); } else { // 登录失败 Toast.makeText(LoginActivity.this, "登录失败", Toast.LENGTH_SHORT).show(); } } }); } }); } } ``` 在这个示例中,我们获取了输入的用户名和密码,然后使用 `signInWithEmailAndPassword()` 方法对其进行验证。如果验证成功,则跳转到主界面,否则显示错误消息。 需要注意的是,这只是一个简单的示例代码,实际应用中还需要进行更多的错误处理和安全性检查。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值