Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android上的Firebase REST验证返回500_Firebase_Xamarin_Firebase Authentication - Fatal编程技术网

Android上的Firebase REST验证返回500

Android上的Firebase REST验证返回500,firebase,xamarin,firebase-authentication,Firebase,Xamarin,Firebase Authentication,直到上周,在Xamarin.Android应用程序中使用Firebase的唯一合理途径(出于很多原因)是需要使用。然而,这似乎也停止了工作 具体而言,我已经能够在我的Android和iOS应用程序中成功地拨打以下电话并获得成功响应: var contentString = $"grant_type=refresh_token&code=string&refresh_token={auth.RefreshToken}"; var requestContent = new Strin

直到上周,在Xamarin.Android应用程序中使用Firebase的唯一合理途径(出于很多原因)是需要使用。然而,这似乎也停止了工作

具体而言,我已经能够在我的Android和iOS应用程序中成功地拨打以下电话并获得成功响应:

var contentString = $"grant_type=refresh_token&code=string&refresh_token={auth.RefreshToken}";
var requestContent = new StringContent(contentString, Encoding.UTF8, "application/x-www-form-urlencoded");
var uri = new Uri(string.Format("https://securetoken.googleapis.com/v1/token?key={0}", this.authConfig.ApiKey));
var response = await client.PostAsync(uri, requestContent).ConfigureAwait(false);
var responseData = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
从昨天起,我开始从上述代码中获得以下
responseData

iOS:

{
  "error": {
    "code": 403,
    "message": "Requests from this ios client application \u003cempty\u003e are blocked.",
    "status": "PERMISSION_DENIED",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.Help",
        "links": [
          {
            "description": "Google developer console API key",
            "url":     "https://console.developers.google.com/project/<my_apps_project_id>/apiui/credential"
          }
        ]
      }
    ]
  }
}
{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "ipRefererBlocked",
    "message": "The request did not specify any Android package name or signing-certificate fingerprint. Please ensure that the client is sending them or use the API Console to update your key restrictions.",
    "extendedHelp": "https://console.developers.google.com/apis/credentials?project=<my_apps_project_id>"
   }
  ],
  "code": 403,
  "message": "The request did not specify any Android package name or signing-    certificate fingerprint. Please ensure that the client is sending them or use the API Console to update your key restrictions."
 }
}
我添加了
client.DefaultRequestHeaders.Add(“X-Ios-Bundle-Identifier”)客户端.PostAsync
之前,将code>添加到我的代码中,它就像一个符咒

转到Android,我在请求头中添加了
“x-Android-cert”
x-Android-package

client.DefaultRequestHeaders.Add("x-android-cert", <my_apps_SHA1>);
client.DefaultRequestHeaders.Add("x-android-package", <my_apps_package_id>);
发泄一下:对我来说,这几乎是Firebase的最后一根稻草。经过一个多月的努力,我们已经克服了一个又一个未经文档化和不成熟的API/SDK。似乎没有什么能像广告宣传的那样起作用(包括——脱离主题——让Firebase处理Angular4项目)。谢谢你让我分享我的沮丧。如果我知道这会有多痛苦,我会建立自己的MBA

在我放弃Firebase之前,我想在这个问题上寻求帮助。如有任何见解和帮助,将不胜感激

编辑1:: 我通过以下更改获得了类似的结果:

 var requestContent = new StringContent(postContent, Encoding.UTF8, "application/json");
 var uri = new Uri(string.Format("https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyAssertion?key={0}", this.authConfig.ApiKey));

Firebase Auth最近记录了他们的REST API:它记录了如何获取Firebase ID令牌以及如何刷新该令牌。你把它作为参考吗?博伊尔-首先,感谢你花时间发表评论。简短回答:是的,以上所有内容(除非我犯了错误)都是基于Firebase REST文档的,并且是当事情停止工作时我第一次回到的地方。我非常感谢任何人的见解,尤其是如果我在这里犯了一个错误。你使用的是Android还是iOS API密钥?您可以只使用浏览器API键(确保对其没有任何限制)。我发布的参考链接应该可以使用。首先从命令行运行cURL命令,确保它与OAuth凭据一起工作。我怀疑您面临的问题与API密钥有关。再次感谢您愿意花一些时间与我一起讨论这个问题。对于iOS应用程序,我使用“GoogleService Info.plist”中提供的API密钥(来自Firebase控制台)。同样,对于Android,我正在使用
google services.json
(来自Firebase控制台)中提供的API键。在这两种情况下,我都会读取这些文件并提取API密钥和其他凭证(以使代码更加可重用)。根据您的建议,我更改了“google services json”中的“api_密钥”/“current_密钥”,它成功了。很酷,我很高兴它成功了。Firebase Auth最近记录了他们的REST api:它记录了如何获取Firebase ID令牌以及如何刷新该令牌。你把它作为参考吗?博伊尔-首先,感谢你花时间发表评论。简短回答:是的,以上所有内容(除非我犯了错误)都是基于Firebase REST文档的,并且是当事情停止工作时我第一次回到的地方。我非常感谢任何人的见解,尤其是如果我在这里犯了一个错误。你使用的是Android还是iOS API密钥?您可以只使用浏览器API键(确保对其没有任何限制)。我发布的参考链接应该可以使用。首先从命令行运行cURL命令,确保它与OAuth凭据一起工作。我怀疑您面临的问题与API密钥有关。再次感谢您愿意花一些时间与我一起讨论这个问题。对于iOS应用程序,我使用“GoogleService Info.plist”中提供的API密钥(来自Firebase控制台)。同样,对于Android,我正在使用
google services.json
(来自Firebase控制台)中提供的API键。在这两种情况下,我都会读取这些文件并提取API密钥和其他凭证(以使代码更加可重用)。根据你的建议,我在“google services json”中更改了“api_键”/“current_键”,它成功了。很酷,我很高兴它成功了。
{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "internalError",
    "message": "Internal Error"
   }
  ],
  "code": 500,
  "message": "Internal Error"
 }
}
 var requestContent = new StringContent(postContent, Encoding.UTF8, "application/json");
 var uri = new Uri(string.Format("https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyAssertion?key={0}", this.authConfig.ApiKey));