我在Android应用程序中使用Google Play服务授权和GoogleAuthUtil.我做了这个部分大约2个月前,它一直工作得非常好,然后继续.昨天,我更新了SDK.现在我在我的应用程序中收到此错误.它说"GoogleAuthUtil无法解决".
更新的SDK中有什么变化吗?
我怎么解决这个问题?
我正在导入以下内容:
import com.google.android.gms.auth.GoogleAuthException;
import com.google.android.gms.auth.GoogleAuthUtil;
import com.google.android.gms.auth.GooglePlayServicesAvailabilityException;
import com.google.android.gms.auth.UserRecoverableAuthException.
Run Code Online (Sandbox Code Playgroud)
我正进入(状态
com.google.android.gms.auth无法解析.
你如何在你的网站上使用谷歌按钮登录?iv一直试图找到我的问题的答案,我永远无法得到正确的答案.所以我要问的是,你有一个谷歌登录按钮.它会将您转到他们的登录页面.用户登录然后让我的网站说他们使用谷歌帐户登录.
我有一个类似批处理的应用程序,它由调度程序定期调用,不涉及任何人类用户。它使用 Perl Net::Google::Spreadsheets包通过从数据库获取的数据更新Google 表格电子表格中的某些单元格。
长期以来,只需向包的“新”方法提供用户名和密码即可轻松验证自身。但最近,谷歌要求我们使用 OAuth2 协议进行身份验证。
JT提供了一个解决方案,我确信它对许多比我知识渊博的人非常有帮助。但是,如果有人可以回答一些问题以澄清它,我将不胜感激,如下所示:
创建凭据:在 Google Developer Console 中创建项目并要求创建新的客户端 ID 后,您会看到三个选项:
五月的申请我应该选择哪一个?
我应该要求 JSON 还是 P12 密钥?
我如何处理我获得的各种类型的实体?我在 Perl 脚本中嵌入了什么?
在第 13 行,JT 评论说“您需要将代码放在这里并接收令牌”。什么样的代码?做什么?
由于没有人类用户,我需要应用程序自己完成完整的身份验证过程。JT 的代码提示用户输入“代码”。此代码是“凭证”实体之一吗?我该怎么做?
换句话说,我需要有人轻轻地引导我一步一步地完成整个过程。
谢谢各位!
梅尔G
在这里,我通过Google下载了源代码(来自Google的教程)授权。
如果运行调试版本,则一切都会按计划进行。但是,如果您安装并运行发行版,则它无法在仿真器或真实电话上运行。告诉我是什么问题?可能是SHA1的问题。当我做“渐变”->“ signingReport”。我得到以下内容:
Variant: releaseUnitTest
Config: none
----------
Variant: debugUnitTest
Config: debug
Store: C:\Users\******\.android\debug.keystore
Alias: AndroidDebugKey
MD5: <some code****>
SHA1: <some code*****>
Valid until: <date***>
----------
Variant: release
Config: none
----------
Variant: debugAndroidTest
Config: debug
Store: C:\Users\******\.android\debug.keystore
Alias: AndroidDebugKey
MD5: <some code****>
SHA1: <some code*****>
Valid until: <date***>
----------
Variant: debug
Config: debug
Store: C:\Users\******\.android\debug.keystore
Alias: AndroidDebugKey
MD5: <some code****>
SHA1: <some code*****>
Valid until: <date***>
Run Code Online (Sandbox Code Playgroud)
另外,还有人说第二件事:
该发行版不起作用,因为未在开发者控制台中注册其他人签署的证书及其指纹。
但是我不明白这意味着什么。
authentication debugging android release google-authentication
我正在尝试将 google OAuth 用于我的网络应用程序。为此,我在我的 venv 和 Docker 构建期间安装了 google-api-python-client 和 google-auth 包(来自 requirements.txt)。尽管如此,当我运行我的应用程序时,它找不到请求模块,抱怨说:
flask.cli.NoAppException: While importing "debateit", an ImportError was raised:
Traceback (most recent call last):
File "/usr/local/lib/python3.5/site-packages/google/auth/transport/requests.py", line 23, in <module>
import requests
ImportError: No module named 'requests'
Run Code Online (Sandbox Code Playgroud)
导入如下:
from google.auth.transport import requests
Run Code Online (Sandbox Code Playgroud)
并使用如下:
idinfo = id_token.verify_oauth2_token(token, requests.Request(), app.config["GOOGLE_LOGIN_CLIENT_ID"])
Run Code Online (Sandbox Code Playgroud)
其他导入,如 id_token.verify_oauth2_token 工作正常。
我检查了我的 docker build,它说我已经正确地包含了 google-auth:
Installing collected packages: ... google-auth, httplib2, google-auth-httplib2, google-api-python-client
Successfully installed ... google-api-python-client-1.7.3 google-auth-1.5.0 google-auth-httplib2-0.0.3 httplib2-0.11.3 ...
Run Code Online (Sandbox Code Playgroud)
当我查看 venv 时,我可以清楚地看到 google.auth.transport.requests 模块,它只是在应用程序本身中不起作用。
我错过了什么?什么可能导致找不到此模块?
我们正在尝试将服务帐户身份验证与我们的后端服务结合使用,以使用 Google Cloud Storage JSON API。但无法确切地找出应该如何完成。我们找到了与 Client Libs 一起使用的示例,但我们正在使用 REST API。有人可以向我解释如何在 POSTMAN 中设置服务帐户身份验证吗?
我正在尝试在Web应用程序中设置Google身份验证。我在Android应用程序上做了几次这种事情,但是现在当我加载我的应用程序时,出现错误“ this.ta不是函数”。也许它有些愚蠢,但我无法发现问题。这是我所拥有的:
api.js
import { db, storage, auth, google_provider } from './firebase'
sign_in() {
auth.signInWithPopup(google_provider).then(result => {
var token = result.credential.accessToken;
var user = result.user;
}).catch(error => {
var errorCode = error.code;
var errorMessage = error.message;
var email = error.email;
var credential = error.credential;
})
}
Run Code Online (Sandbox Code Playgroud)
firebase.js
import * as firebase from 'firebase';
const app = firebase.initializeApp({
apiKey: "my-key",
authDomain: "domain",
databaseURL: "https://domain-url",
projectId: "name",
storageBucket: "bucket",
messagingSenderId: "id"
})
export const db = app.firestore()
export const storage = app.storage().ref() …Run Code Online (Sandbox Code Playgroud) 所以我有服务帐户凭据 json(作为字符串,或我的代码中的 json 对象):
{
"type": "service_account",
"project_id": "myproject",
"private_key_id": "lkjshdjhskas",
//.... etc
}
Run Code Online (Sandbox Code Playgroud)
然后我有这个简单的云存储上传片段:
const {Storage} = require('@google-cloud/storage');
const creds = {service_account_object:"creds are here"};
const storage = new Storage();
const bucketName = 'my-bucket';
const filename = 'my-file.txt';
storage.bucket(bucketName).upload(filename, {
gzip: true,
metadata: {
cacheControl: 'public, max-age=31536000',
},
});
Run Code Online (Sandbox Code Playgroud)
这给了我一个 invalid_grant 错误,当然:
(node:15920) UnhandledPromiseRejectionWarning: Error: invalid_grant
at Gaxios.request (C:\Users\Yuri\Documents\Code\btests\node_modules\gaxios\build\src\gaxios.js:70:23)
at process._tickCallback (internal/process/next_tick.js:68:7)
(node:15920) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a …Run Code Online (Sandbox Code Playgroud) google-authentication node.js google-cloud-storage google-cloud-platform
一些细节:
在 Android 上,当我调用 GoogleSignIn.signInAsync() 时,对话出现,并且似乎按预期工作,但函数返回的承诺解析为undefined。
这是我的代码的简化摘录(我不显示警报和其他各种我认为不是我的问题/问题核心的东西):
import * as GoogleSignIn from 'expo-google-sign-in'
...
let clientId = *cencored*
// If I understand the documentation correctly this parameter
// isn't really necessary on Android, but I've provided one anyway.
// Actually, I've tried several different ones.
await GoogleSignIn.initAsync({
clientId,
scopes: ['profile', 'email']
})
await GoogleSignIn.askForPlayServicesAsync()
const result = await GoogleSignIn.signInAsync()
// ^ dialogue opens and …Run Code Online (Sandbox Code Playgroud) android google-authentication react-native google-signin expo
我正在尝试访问安全的云运行服务。如果我在我的机器上使用 SDK 尝试它工作正常:
curl --header "Authorization: Bearer $(gcloud auth print-identity-token)"
但是,我无法使用 Python API 使用相同的服务帐户使其工作,我尝试使用 google-auth 获取访问令牌,但这给了我 401 身份验证错误。这是我用来尝试获取令牌的代码:
import google.auth
import google.auth.transport.requests
scopes = ['https://www.googleapis.com/auth/cloud-platform']
creds, projects = google.auth.default(scopes=scopes)
auth_req = google.auth.transport.requests.Request()
creds.refresh(auth_req)
# then using creds.token
Run Code Online (Sandbox Code Playgroud)
查看文档:https : //cloud.google.com/run/docs/authenticating/service-to-service#calling_from_outside_gcp它说要遵循此处的示例代码:https : //cloud.google.com/iap/docs /authentication-howto#iap_make_request-python我似乎无法按照指南进行操作,因为它说启用 IAP 但似乎 IAP 仅适用于应用程序引擎而不适用于云运行?
有没有人对此有任何建议?
谢谢
python google-authentication google-cloud-platform google-cloud-run
android ×3
javascript ×2
python ×2
css ×1
debugging ×1
docker ×1
expo ×1
firebase ×1
google-api ×1
html ×1
node.js ×1
perl ×1
react-native ×1
release ×1
sign ×1