我正在使用gplus登录,并且当我在onActivityResult时收到此错误....
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
client.onActivityResult(requestCode, resultCode, data);
if (requestCode == 0) {
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
if (result.isSuccess()) {
GoogleSignInAccount acct = result.getSignInAccount();
// Log.d("Result","details"+ acct.getDisplayName() + acct.getEmail());
mEmail = acct.getEmail();
String mFullName = acct.getDisplayName();
String mGoogleplusId = acct.getId();
SocialUser user = new SocialUser();
user.setType("googleplus");
user.setEmail(mEmail);
user.setFullname(mFullName);
user.setId(mGoogleplusId + "");
loginParams.put("email_id", mEmail);
loginParams.put("googlePlusId", mGoogleplusId);
loginParams.put("full_name", mFullName);
loginParams.put("registrationType", "googleplus");
SignUpService(user);
} else {
Toast.makeText(CustomerLogIn.this, "Unable to fetch data, Proceed manually", Toast.LENGTH_SHORT).show();
}
}
}
我正在点击按钮点击gplus登录。在执行代码后执行clcking按钮....
GoogleSignInOptions googleSignInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.build();
mGoogleApiClient = new GoogleApiClient.Builder(CustomerLogIn.this)
.addApi(Auth.GOOGLE_SIGN_IN_API, googleSignInOptions)
.build();
Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
startActivityForResult(signInIntent, 0);
我发现了这个错误......
Status{statusCode=DEVELOPER_ERROR, resolution=null}
在这一行......
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
请建议解决方案。
答案 0 :(得分:167)
您需要将SHA1密钥添加到firebase控制台配置中。 你可以这样做:
Firebase控制台(https://console.firebase.google.com) - >你的项目 - >配置 - >滚动到
您可以找到正在运行的SHA1密钥"登录报告"来自Android Studio:
然后,查看"运行标签"然后单击按钮:
我认为这是更简单的方法。希望这有帮助。
答案 1 :(得分:27)
您可能使用生产令牌的SHA1创建配置文件,使用androiddebugkey
别名收集与应用调试版对应的SHA1,并将配置文件复制到应用程序'在目录中,您应该有两个配置文件(一个用于调试目的,另一个用于生产环境)。
基于https://developers.google.com/identity/sign-in/android/start
中发布的演练答案 2 :(得分:10)
我遇到了同样的问题,我通过这些步骤开始工作:
1.将DEBUG_KEYSTORE SHA1指纹添加到firebase项目。使用以下命令(MAC / LINUX)
Copy the path of the newly generated .jks file.
2.Now生成项目的签名apk。该过程包括为应用程序的发布版本生成密钥库。
keytool -list -v -keystore FULL_PATH_TOJKS_FILE -alias ALIAS_NAME
3.现在使用以下命令生成RELEASE_KEYSTORE SHA1指纹
options
4.从输出中复制新的SHA1,并将其作为另一个SHA1指纹添加到firebase应用程序控制台中。
现在你很高兴! ----希望!它会有所帮助。
答案 3 :(得分:7)
答案 4 :(得分:5)
我遇到了同样的问题,我解决的问题是我的gradle文件中的applicationId与清单文件中的包名不同。我曾经使用applicationId来创建json文件。我不得不将我的包名更改为我的applicationId,并为我修复了它。
答案 5 :(得分:3)
请将正确的json文件放在android项目的root中 有关更多信息,请参阅此处:http://coderzpassion.com/android-working-latest-google-plus-login-api/
答案 6 :(得分:3)
除了此处提供的答案外,您还可以使用Android Studio的Firebase助手,只需点击一些按钮即可自动将SHA-1添加到项目中。
在Android Studio中,转到Tools > Firebase > Select 'Authentication'
,然后点击显示'Email and password authentication'
的链接。
这将为您提供有关如何将身份验证集成到项目中的一些教程,但由于您可能已完成所有这些操作,因此只需点击'Connect to Firebase'
即可完成。
答案 7 :(得分:2)
您可能已经生成并添加了错误的SHA1密钥。使用以下步骤在Android Studio中生成SHA1密钥:
现在将这个SHA1密钥添加到您的firebase android项目中。
答案 8 :(得分:1)
这是一个老问题,但我最近一直遇到错误10(DEVELOPER_ERROR),因为我使用的是Android客户端ID,我是在google开发者控制台中创建的。
我的解决方案是仅使用Google开发者控制台中的Android凭据来指示我的apk的SHA密钥,并在我的cordova应用程序中使用来自google开发者控制台的Web应用程序(!)凭据的客户端ID。
config.xml中:
<plugin name="cordova-plugin-googleplus" spec="^5.3.0">
<variable name="REVERSED_CLIENT_ID" value="com.googleusercontent.apps.[web-application-client-id]" />
<variable name="WEB_APPLICATION_CLIENT_ID" value="[web-application-client-id].apps.googleusercontent.com" />
</plugin>
代码:
window.plugins.googleplus.login(
{
'webClientId': '[web-application-client-id].apps.googleusercontent.com'
},
...
我不使用firebase。
答案 9 :(得分:0)
如果您在使用已发布版本(生产)时遇到此问题:
转到 Google Play 控制台并从 Release -> Setup -> App Integrity 复制 SHA-1 密钥
答案 10 :(得分:0)
不要忘记添加发布指纹。前一个答案告诉只添加调试指纹,当您在调试模式下运行您的应用程序时,您的问题刚刚解决。如果您发布您的应用程序,您可以看到您的问题仍然存在。然后确保您也添加了发布指纹。
答案 11 :(得分:0)
当您让 Google 管理您的应用签名时,您可以在 Google Play 控制台中找到 SHA-1 密钥。 在侧边栏菜单上查找“配置 -> 应用程序完整性”。您将在此处找到已签名应用的 SHA-1 密钥。
您还会看到已上传到商店的已签名应用的 SHA-1 密钥。
答案 12 :(得分:0)
我为解决此问题而苦苦挣扎,因为我通过更改程序包名称制作了应用程序副本。 我在Firebase为其添加了一个新项目。 我的错误是我忘记在新的Firebase项目中将服务器的客户端ID更改为该客户端ID。
more details under authintication with Firebase sectoin here
答案 13 :(得分:0)
经过长时间的调查,我找到了解决方案。实际上,此错误Error: Status{statusCode=DEVELOPER_ERROR, resolution=null}
指向不正确的SHA-1 OR 错误的软件包名称 OR ?就我而言,我在包名称debug
=> com.sample.app
com.sample.app.debug
关键字
答案 14 :(得分:0)
诸如Google登录之类的某些服务需要将SHA1指纹添加到您的Firebase控制台。
我错过了在Firebase控制台中添加SHA指纹的功能。您可以通过以下方法进行操作:进入FireBase控制台>项目设置>添加指纹选项。
您可以通过非常简单的方法https://www.youtube.com/watch?v=FczARQ244GE
生成SHA1指纹那之后我又犯了一个错误
以上方法生成SHA1密钥后。我复制了错误的无效SHA1密钥,该密钥已过期。因此,请确保您要从上述输出中复制的SHA1密钥是有效的(请同时检查SHA1密钥的有效直到值)
还要确保您在firebase中添加的包名称(x.y.z)与您的android代码中使用的包名称相同。
还要确保使用正确的AppID
答案 15 :(得分:0)
我通过在此行中使用 server_client_id 解决了我的问题:
String serverClientId = getString(R.string.server_client_id);
我使用了错误的代码。
答案 16 :(得分:0)
对我来说,当我第一次实现它时它正在工作,但是经过几天的开发后就停止了,并带有上述错误消息。
我已通过以下步骤解决了该问题:
成功了
答案 17 :(得分:0)
确保在Firebase控制台中的身份验证下启用Google登录。
答案 18 :(得分:0)
对于发布应用的任何人,您需要来自密钥库文件的特殊指纹。难怪为什么我只是为发布版本收到此错误。 How to obtain Signing certificate fingerprint (SHA1) for OAuth 2.0 on Android?
答案 19 :(得分:0)
导致错误是因为firebase / google控制台中未包含调试版或释放密钥的SHA-1校验和。
首先使用以下命令生成密钥:
import java.util.ArrayList;
import java.util.Scanner;
public class OrderArrayList {
ArrayList<OrderList> orderList;
public OrderArrayList() {
orderList = new ArrayList();
}
public boolean isEmpty() {
return orderList.isEmpty();
}
public void push(OrderList x) {
orderList.add(x);
}
public void addOrder() {
Scanner input1 = new Scanner(System.in);
System.out.print("Product code: ");
String pcode = input1.nextLine();
Scanner input2 = new Scanner(System.in);
System.out.print("Customer Code: ");
String ccode = input2.nextLine();
Scanner input3 = new Scanner(System.in);
System.out.print("Quantity: ");
int quantity = input3.nextInt();
OrderList order = new OrderList(pcode, ccode, quantity);
orderList.push(order);
}
然后复制SHA-1校验和并转到:
Firebase控制台&gt;你的项目&gt; <应用程序的设置>添加指纹
答案 20 :(得分:0)
当我使用新的Google帐户更新我的json配置文件时出现此错误。
手动卸载应用程序并重新安装适用于我的应用程序。
答案 21 :(得分:0)
我在firebase应用中遇到了这个错误。
我在下面添加了requestIdToken(activity.getString(R.string.default_web_client_id))
部分时修复了它。
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail().requestIdToken(activity.getString(R.string.default_web_client_id))
.build();
apiClient = new GoogleApiClient.Builder(activity)
.addConnectionCallbacks(this)
.enableAutoManage(activity, this)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build();
Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(apiClient);
activity.startActivityForResult(signInIntent, RC_GOOGLE_SIGN_IN);