C# Shopify访问令牌返回null

C# Shopify访问令牌返回null,c#,shopify,restsharp,shopify-app,C#,Shopify,Restsharp,Shopify App,在我的旅程快结束时,我意识到我的访问令牌是空的。我在visual studio中使用RectSharp和C#来启动并运行shopify应用程序,所有操作都可以按install,然后我被带回visual studio,并告诉我accessToken为null D: 下面是一些错误图片和我的调试 这就是我注意到的在r附近弹出的错误,它是用rectSharp编写的,在我看来是正确的 {{ "error": "822: unexpected token at 'client_id=6e83a9e8

在我的旅程快结束时,我意识到我的访问令牌是空的。我在visual studio中使用RectSharp和C#来启动并运行shopify应用程序,所有操作都可以按install,然后我被带回visual studio,并告诉我accessToken为null D:

下面是一些错误图片和我的调试

这就是我注意到的在r附近弹出的错误,它是用rectSharp编写的,在我看来是正确的

{{
  "error": "822: unexpected token at 'client_id=6e83a9e8b79dccbad77530c7273e3e00&client_secret=03cfa0ef9b451868bb0160e4ad75e0ec&code=3a941fe03d9fc0ea0d4226f9f4af316f'"
}}
这是我的身份验证代码:

 public ActionResult install(string shop, string signature, string timestamp)
    {
        string r = string.Format("https://{0}/admin/oauth/authorize?client_id={1}&scope=read_fulfillments,write_fulfillments,read_orders,write_products&redirect_uri=https://{2}/fulfillment/auth", shop, apiKey, appUrl);
        return Redirect(r);
    }

    public ActionResult auth(string shop, string code)
    {

            string u = string.Format("https://{0}/admin/oauth/access_token", shop);

            var client = new RestClient(u);

            var request = new RestRequest(Method.POST);

            request.RequestFormat = DataFormat.Json;
            request.AddHeader("Content-Type", "application/json");

            request.AddParameter("application/x-www-form-urlencoded", "client_id=" + apiKey + "&client_secret=" + secretKey + "&code=" + code, ParameterType.RequestBody);

            var response = client.Execute(request);

            var r = JsonConvert.DeserializeObject<dynamic>(response.Content);
            var accessToken = r.access_token;
            accesstokenmain = r.access_token;
            //save shop token and information to database
            SaveShopToken(shop, (string)accessToken);

            //Part 5
            //create a un-install web hook
            //you want to know when customers delete your app from their shop

            string unInstallUrlCallback = "https://8a047f39.ngrok.io/fulfillment/uninstall";

            string shopAdmin = string.Format("https://{0}/admin/", shop);

            var webHook = new WebHookBucket();
            webHook.Whook = new WebHook { Format = "json", Topic = "app/uninstalled", Address = unInstallUrlCallback };

            CreateUninstallHook(shopAdmin, "webhooks.json", Method.POST, (string)accessToken, webHook);

            return Redirect(AskCustomerCharge(shop, (string)accessToken));


       // return View();
    }

    public void SaveShopToken(string shop, string token)
    {
        using (var con = new fulfillmentdbEntities())
        {
            if (con.ShopTokens.Any(c=>c.Shop == shop))
            {

            } else
            {
                con.ShopTokens.Add(new ShopToken { Shop = shop, Token = token, InstallDate = DateTime.Now });
            }

            con.SaveChanges();
        }
    }
public ActionResult安装(字符串商店、字符串签名、字符串时间戳)
{
string r=string.Format(“https://{0}/admin/oauth/authorize?client_id={1}&scope=read_fulfillments,write_fulfillments,read_orders,write_products&redirect_uri=https://{2}/fulfillment/auth”,shop,apiKey,appUrl);
返回重定向(r);
}
公共操作结果验证(字符串商店,字符串代码)
{
string u=string.Format(“https://{0}/admin/oauth/access_-token”,shop);
var客户端=新的RestClient(u);
var请求=新的重新请求(Method.POST);
request.RequestFormat=DataFormat.Json;
AddHeader(“内容类型”、“应用程序/json”);
request.AddParameter(“application/x-www-form-urlencoded”、“client_id=“+apiKey+””和client_secret=“+secretKey+””和code=“+code,ParameterType.RequestBody”);
var response=client.Execute(请求);
var r=JsonConvert.DeserializeObject(response.Content);
var accessToken=r.access\u令牌;
accesstokenmain=r.access\u令牌;
//将店铺令牌和信息保存到数据库
SaveShopToken(shop,(string)accessToken);
//第五部分
//创建一个未安装的web钩子
//您想知道客户何时从他们的商店中删除您的应用程序
字符串unInstallUrlCallback=”https://8a047f39.ngrok.io/fulfillment/uninstall";
string shopAdmin=string.Format(“https://{0}/admin/”,shop);
var webHook=新的WebHookBucket();
webHook.Whook=newwebhook{Format=“json”,Topic=“app/uninstalled”,Address=unInstallUrlCallback};
CreateUninstallHook(shopAdmin,“webhooks.json”,Method.POST,(string)accessToken,webHook);
返回重定向(AskCustomerCharge(shop,(string)accessToken));
//返回视图();
}
public void SaveShopToken(字符串商店、字符串令牌)
{
使用(var con=new fulfillmentdbEntities())
{
if(con.shoptokes.Any(c=>c.Shop==Shop))
{
}否则
{
添加(newshoptoken{Shop=Shop,Token=Token,InstallDate=DateTime.Now});
}
con.SaveChanges();
}
}

请尝试更改
请求.AddHeader
请求.AddParameter
,如下所示

request.AddHeader("content-type", "application/x-www-form-urlencoded");
request.AddParameter("application/x-www-form-urlencoded", $"client_id={apiKey}&client_secret={secretKey}&code={code}, ParameterType.RequestBody);

请在request.AddParameter步骤中添加调试器,并检查apiKey,secretKey和code值是否正确传递?您可能不应该在此处发布客户端id和secret…@SteveJ这是为了测试目的xD@Subburaj我马上去检查一下now@Subburaj我检查了一下他们是否经过,他们是。我注意到在转换时,代码之间有两个破折号“asdasd//adasd”。我不确定这是否是个错误。非常感谢。这解决了我的问题,我很感激!很高兴知道这有帮助。请点击向上箭头按钮进行向上投票