我已经为我的网络应用程序实现了谷歌登录,我在其中使用了这个库:https : //metacpan.org/pod/Google :: RestApi :: Auth :: OAuth2Client来获取代码值,访问令牌然后是用户的信息(电子邮件、姓名、google-id)。
我在这个实现中的问题是,用户在需要插入他的信息(电子邮件和密码)的地方提示同意,我想重定向用户以获得同意,他可以选择帐户,而不是插入他的信息。我不知道我在何处发出 GET 请求的实现是不正确的,还是因为我使用的库。
在前端,我有一个表单调用重定向到我的后端函数“on_google_login”的路由:
sub on_google_login {
my $self = shift;
my $redirect_name = $self->get_redirect_name();
$self->session(redirect => $redirect_name);
my $google = Google::RestApi::Auth::OAuth2Client->new(
client_id => $ENV{GOOGLE_CLIENT_ID},
client_secret => $ENV{GOOGLE_SECRET},
redirect_uri => $ENV{GOOGLE_BASE_URL} . '/google_callback'
);
my $url = $google->authorize_url(
display => 'page'
);
$self->redirect_to($url);
}
Run Code Online (Sandbox Code Playgroud)
这是我的回调函数,我在其中提取“代码”并使用访问令牌请求用户的信息。
sub on_google_callback {
my $self = shift;
my $code = $self->req->param('code');
my $google = Google::RestApi::Auth::OAuth2Client->new(
client_id => $ENV{GOOGLE_CLIENT_ID},
client_secret => $ENV{GOOGLE_SECRET},
redirect_uri => $ENV{GOOGLE_BASE_URL} …Run Code Online (Sandbox Code Playgroud) perl google-api google-authentication oauth-2.0 google-signin
我尝试使用ClientLogin进行身份验证
URL url = new URL("https://www.google.com/accounts/ClientLogin");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("POST");
connection.setRequestProperty("Email", "testonly%2Ein%2E2011%40gmail%2Ecom");
connection.setRequestProperty("Passwd", "mypass");
connection.setRequestProperty("accountType", "HOSTED");
connection.setRequestProperty("service", "apps");
connection.connect();
Run Code Online (Sandbox Code Playgroud)
但我明白了Error=BadAuthentication.我该如何纠正我的代码?
java authentication google-app-engine google-api google-authentication
我正在尝试使用scala中的google云存储java库来列出存储桶中的项目
val credential = new GoogleCredential.Builder()
.setTransport(GoogleNetHttpTransport.newTrustedTransport())
.setJsonFactory(JacksonFactory.getDefaultInstance())
.setServiceAccountId("xxx@developer.gserviceaccount.com")
.setServiceAccountScopes(Collections.singleton(StorageScopes.DEVSTORAGE_READ_ONLY))
.setServiceAccountPrivateKeyFromP12File(new File("file.p12"))
.build()
val storage = new Storage.Builder(
GoogleNetHttpTransport.newTrustedTransport(),
JacksonFactory.getDefaultInstance(),
credential)
.setHttpRequestInitializer(credential)
.setApplicationName("app")
.build()
storage.objects.list("bucket").execute
Run Code Online (Sandbox Code Playgroud)
但是我得到了
com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
{
"code" : 403,
"errors" : [ {
"domain" : "global",
"message" : "Forbidden",
"reason" : "forbidden"
} ],
"message" : "Forbidden"
}
Run Code Online (Sandbox Code Playgroud)
我的电子邮件帐户可以访问存储桶,我也可以通过在我的帐户中创建项目来使用gsutil访问它.我在我的帐户中的项目中创建了xxx@developer.gserviceaccount.com,知道如何设置权限?
我的应用允许用户使用Google Plus登录,并获取他们的姓名和电子邮件地址.我试图访问令牌.
访问令牌的代码:
Toast.makeText(this, "User is connected!", Toast.LENGTH_LONG).show();
GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext());
AccountManager am = AccountManager.get(this);
final Account[] accounts = am.getAccountsByType(GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE);
AsyncTask<Void, Void, String> task2 = new AsyncTask<Void, Void, String>() {
public static final int REQUEST_CODE_TOKEN_AUTH = 100;
@Override
protected String doInBackground(Void... params) {
String mScope="audience:server:client_id:899555500747-38rpnq51of946grhdvofck7r8u5p09cd.apps.googleusercontent.com:api_scope:https://www.googleapis.com/auth/plus.login";
// Get the token for the current user
String token = null;
try {
token = GoogleAuthUtil.getToken(getApplicationContext(), Plus.AccountApi.getAccountName(mGoogleApiClient), mScope);
Log.i("G token", token);
} catch (IOException transientEx) {
// Network or server error, try later
Log.e(TAG, transientEx.toString());
} …Run Code Online (Sandbox Code Playgroud) android google-authentication clientid google-plus google-play-services
我想在我的网站中实现Google登录,就像在Stack Exchange,Stack Overflow等中完成一样.这意味着当用户选择使用Google身份验证登录时,该网站会重定向到一个页面,在该页面中他可以选择使用哪个Google帐户而无需打开新窗口/标签并重定向到该网站您能否帮我链接/文档如何操作非常重要的是不要打开新的标签/窗口.
我正在使用这个:https://developers.google.com/identity/sign-in/web/build-button
您可以看到,当您单击按钮时,会打开一个新窗口,我会用它来防止这种情况发生.
提前致谢
javascript google-authentication google-oauth google-oauth2 google-signin
我在我的应用程序中共享一个登录模块,其中一个 LoginActivity处理Facebook和Google身份验证(逻辑+ UI).
现在,通过Facebook,可以轻松地为每个应用指定不同的ID,覆盖facebook_app_id应用模块中的库字符串.
我没有找到与Google登录相同的方法,因为它需要一个google-services.json文件.实际上,如果我将文件包含在应用程序模块中而不是登录库中,则构建将失败.
错误:任务':core:processReleaseGoogleServices'的执行失败.
文件google-services.json丢失了.没有它,Google Services插件无法运行.
错误是不言自明的,我需要 google-services.json在登录模块中.关键是其他应用程序也有自己的google-services.json.
有没有办法可以google-services.json在Login模块中添加一个虚拟对象,然后在真实的应用程序中覆盖它?
android google-authentication google-play-services android-gradle-plugin google-signin
我正在寻找将一个Node应用程序部署到Heroku,而我遇到的主要挑战与Node的Google默认授权工作流程有关.默认情况下,Google会查找带有密钥的JSON文件,其中GOOGLE_APPLICATION_CREDENTIALS环境变量名称指向此JSON文件的路径.这对于本地开发来说很好,但在生产中我自然不希望将这个敏感的JSON文件提交到源代码.Heroku允许您创建环境变量,但每个变量都是个体的.不知何故,我需要将这个JSON文件分解为单个变量,但我不知道如何将它们称为Google以识别它们.
我计划使用 google firebase 来处理我的网站身份验证,但我找不到任何有关如何在我的页面上嵌入 google 登录按钮的文档。我不打算嵌入默认的platform.js脚本,因为它不用于处理身份验证。
所有功能均由 firebase 处理。另外,我计划使用自定义 UI,而不是 Web 版 Firebase UI。
按钮文本还应该可针对不同的注册和登录按钮模式进行自定义。
我有一些奇怪的问题,我无法解决.我有一个Android应用程序,可以登录Google.该应用程序遵循MVP模式并使用片段而不是活动.登录部分来自此处:https: //developers.google.com/identity/sign-in/android/
它一切正常,直到我尝试通过点击它以外的方式关闭登录对话框(您选择用户).我认为它应该给我一个状态代码12501(SIGN_IN_CANCELLED),但我得到代码13(错误).我的假设错了吗?我应该忽略代码13,如果发生错误,不向用户显示任何错误吗?
以下是最相关的代码
活动:
public class SignInActivity extends AppCompatActivity implements SignInFragment.SignInListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sign_in);
// Add sign in fragment
mSignInFragment = new SignInFragment();
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager
.beginTransaction()
.replace(R.id.sign_in_frame, mSignInFragment, TAG)
.commit();
}
@Override
public void startSignIn() {
Intent signInIntent = mSignInFragment.getGoogleSignInClient().getSignInIntent();
startActivityForResult(signInIntent, RC_SIGN_IN);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RC_SIGN_IN) {
Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
mSignInFragment.handleSignInResult(task);
}
} …Run Code Online (Sandbox Code Playgroud) 我正在使用 Google Cloud Translate v3 API Java 客户端。Java 客户端代码示例效果很好。代码示例的身份验证是使用 GOOGLE_APPLICATION_CREDENTIALS 环境变量完成的。
我需要开发将在我无法控制环境变量的应用程序服务器中运行的代码。所以我需要使用另一种方式来验证呼叫。 设置服务器到服务器生产应用程序的身份验证,在“将路径传递到代码中的服务帐户密钥”下有一个适用于存储服务的代码示例(选择 JAVA 选项卡),但我找不到类似的方法将 GoogleCredentials 传递给 Translation v3 API Java 客户端。有人知道吗?
另外,我找不到 v3 API 的 Java 文档。https://googleapis.dev/java/google-cloud-clients/latest/index.html显示版本“0.119.0-alpha”,并且未列出包 com.google.cloud.translate.v3。是否有单独的 java 文档页面?
android ×3
google-api ×3
java ×3
clientid ×1
firebase ×1
google-oauth ×1
google-plus ×1
heroku ×1
javascript ×1
node.js ×1
oauth-2.0 ×1
perl ×1
scala ×1