我正在开发我尝试使用Google登录的应用程序.但getExtrasdata始终返回null.
这是我从日志中得到的:
getSignInIntent = { act=com.google.android.gms.auth.GOOGLE_SIGN_IN cmp=com.rbsoftware.pfm.personalfinancemanager/com.google.android.gms.auth.api.signin.internal.SignInHubActivity (has extras) }
mGoogleApiClient=com.google.android.gms.internal.zzmg@1f595441
handleSignInResult:false
result=com.google.android.gms.auth.api.signin.GoogleSignInResult@7d8c188
data=Intent { (has extras) }
getExtrasdata=Bundle[{googleSignInStatus=Status{statusCode=INTERNAL_ERROR, resolution=null}}]
Run Code Online (Sandbox Code Playgroud)
在Developer Console中一切都应该没问题.
你能帮我修一下这个问题吗?
package com.rbsoftware.pfm.personalfinancemanager;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import com.google.android.gms.auth.api.Auth;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
import com.google.android.gms.auth.api.signin.GoogleSignInResult;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.SignInButton;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.common.api.OptionalPendingResult;
import com.google.android.gms.common.api.ResultCallback;
public class LoginActivity extends AppCompatActivity implements
GoogleApiClient.OnConnectionFailedListener,
View.OnClickListener {
private static final String TAG = "SignInActivity";
private static final int RC_SIGN_IN = 9001; …Run Code Online (Sandbox Code Playgroud) android google-api google-authenticator google-plus google-signin
我想在我的 PHP 项目中使用 Google 2FA。用户需要在登录时输入 6 位 2fa 代码。
你能画出一些关于采取哪个方向的提示吗?
在 Google Authenticator 应用中,您可以扫描二维码或手动输入颁发者提供的密钥。
在下面的屏幕截图中,您可以看到Google安全设置中2FA的设置,显示了如何按照第二种方法获取TOTP。
我的问题是:这个密钥是如何生成的?
我正在尝试为我的网站使用 Google Authenticator 支持 2FA,我发现了许多有关如何生成 QR 码的参考资料和文档,但没有提到替代方法。
编辑:
更清楚地说,我在 Grails 3 Web 应用程序中使用 Google Authenticator 支持 2FA。我已经通过为每个用户生成一个密钥(Base32字符串)、提供一个二维码供用户扫描以及在登录时验证 TOTP 来实现整个用户流程。我用作依赖项:
org.jboss.aerogear:aerogear-otp-java, aerogear OTP可根据 GA 的 TOTP 方便地验证用户密钥org.grails.plugins:qrcode, qrcode Grails 插件生成二维码我的问题是关于在 Google Authenticator 应用程序中添加新条目的 2 种方法: 1. 扫描二维码(我这边一切正常) 2. 手动输入帐户名称和字母代码(在我的第一个屏幕截图中,代码是在 Google 安全设置中提供)
您可以看到 Android 版 GA 的说明性屏幕截图:
我如何生成并向fzee用户提供这样的代码(从第一个屏幕截图开始,并在第二个屏幕截图中命名为“提供的密钥”)?我确信它是在 QR 码中编码的相同数据字符串的编码,但我不知道是哪个(不仅仅是Base32)。
qr-code one-time-password google-authenticator two-factor-authentication totp
我想在Python中实现Google Authenticator生成的2FA代码
Google Play 上的应用程序 Google Authenticator 可为所需服务生成两步验证。
我已经在我的 Google 帐户上设置了 2FA,他们以“bsnz bwpn tji6 flto 5enn 6vd4 wji7 aaaa”的形式向我提供了密码,并注明“空格无关紧要”
所以,我在Python中尝试了以下代码,但它不起作用。
在 Google 身份验证器中,我已经选择了“基于时间”
我的计算机上运行下面的脚本的时间与我手机上安装 Google Authenticator 应用程序的时间相同。
import pyotp, base64
totp = pyotp.TOTP( base64.b32encode("bsnz bwpn tji6 flto 5enn 6vd4 wji7 aaaa") )
print "Current OTP:" + totp.now()
Run Code Online (Sandbox Code Playgroud)
Google Authenticator App 生成的代码与我的代码不匹配。
我究竟做错了什么 ?
我的理解(可能显然是错误的)是Authen :: OATH模块与Google Authenticator App生成的totp代码兼容.但它对我不起作用,而类似的红宝石代码则有用.我们在这里是一个perl商店,如果有人能指出我正确的方向来帮助我免于逐行挖掘两个库,那将会有所帮助.
这款红宝石兼容:
require 'rubygems'
require 'rotp'
secret = "bqagf6ohx4rp3a67"
puts ROTP::TOTP.new(secret).now.to_s
Run Code Online (Sandbox Code Playgroud)
这个perl没有:
use Authen::OATH;
my $oath = Authen::OATH->new();
my $totp = $oath->totp(" bqagf6ohx4rp3a67" );
print "$totp\n";
Run Code Online (Sandbox Code Playgroud) 您好我已经创建了自己的asp.net项目(非MVC).现在我想使用Google身份验证器实现双因素身份验证.因此,当用户获得注册用户将获得密钥或获取QR图像和设置与它的Android手机.对于登录,他们需要来自谷歌身份验证器应用程序的密钥.
我在asp.net中获得了很少的MVC代码.我需要步骤如何集成在asp.net应用程序(非MVC)请指导我如何实现这个任何样本将不胜感激.
谢谢
我正在建立一个使用Ruby on Rails + AngularJS + 设计令牌身份验证Gem的网站,我想实现Google身份验证器.
我找到了这个gem devise_google_authenticator
问题是我无法实现Gem,因为我正在使用AngularJS.
我实际上是在项目中实现双因素身份验证.我做的是
Auth::user()->google2fa_passed = 1;
Run Code Online (Sandbox Code Playgroud)
事实上它并没有真正存储,当导航到另一个页面时,缺少值.
我也不想保留在另一个会话中,因为当用户注销(或用户从浏览器中删除会话cookie)时,将显示登录页面,并再次通过2因子身份验证.
知道如何为用户会话保存1个以上的属性吗?
我目前正在尝试重新创建 Google 一次性密码生成器。我使用设置 Google Authenticator 时生成的共享密钥。我尝试查看 Google Authenticator 来源和互联网上的所有内容,发现与我的代码有很多相似之处,但我真的找不到我错在哪里。第一部分似乎是正确的。至于 hmac,我认为我不会在这里搞砸,但我可能是错的。截断部分对我来说仍然有点模糊,我尝试了很多不同的实现,但我就是无法获得有效的 OTP。(我正在使用 Google Authenticator 来比较结果)
private String truncateHash(byte[] hash) {
int offset = hash[hash.length - 1] & 0xF;
long truncatedHash = 0;
for (int i = 0; i < 4; ++i) {
truncatedHash <<= 8;
truncatedHash |= (hash[offset + i] & 0xFF);
}
truncatedHash &= 0x7FFFFFFF;
truncatedHash %= 1000000;
int code = (int) truncatedHash;
String result = Integer.toString(code);
for (int i = result.length(); i < 6; i++) {
result = "0" …Run Code Online (Sandbox Code Playgroud) 我一直在尝试弄清楚如何在我的 Identity server 4 应用程序中使用 Google 身份验证启用 2f 登录。
2fa 适用于电子邮件和电话。
如果我检查
var userFactors = await _userManager.GetValidTwoFactorProvidersAsync(user);
Run Code Online (Sandbox Code Playgroud)
它有两个email and phone。我假设这将是为此用户设置的两个因素提供程序。
现在,如果我_usermanager再次检查,有一个名为 的字段tokenproviders。其中似乎包含default, email, phone, and authenticator. 我假设这些是 Asp .net 身份配置来处理的。
我已经弄清楚如何创建为验证器应用程序生成二维码所需的秘密。以及如何构建 QR 码和测试代码
var code = _userManager.GenerateNewAuthenticatorKey();
var qr = AuthencatorHelper.GetQrCodeGoogleUrl("bob", code, "My Company");
var user = await _signInManager.TwoFactorAuthenticatorSignInAsync(codeFromAppToTestWith, true, false);
if (user == null)
{
return View("Error");
}
Run Code Online (Sandbox Code Playgroud)
现在问题来了。我已经尝试了在用户身上找到的所有方法,试图找出如何向用户添加另一个令牌提供程序。
如何为用户分配新的令牌提供程序并提供创建身份验证代码所需的密码?我什至没有在数据库设置中看到任何表来处理这些信息。电子邮件和电话号码在那里,还有 2faenabled 列。但没有关于验证器的信息。
我目前正在考虑创建一个自定义用户管理器并向应用程序用户添加一个字段。我真的希望有人有更好的主意。
c# google-authenticator asp.net-identity asp.net-core identityserver4