我正在尝试连接到Zoho CRM API以将数据导入PowerBI,并且通过自定义连接器登录Zoho后收到错误消息,我希望您能提供帮助,因为我的连接器似乎已完成90%,只是错过了最后一个步! (下面的代码)。
错误消息:[DataFormatError]我们无法解析您的查询字符串,因为其格式不正确
// This file contains your Data Connector logic
section Zoho_Connector___V1.1;
// TODO: add your client id and secret to the embedded files
client_id = "XXXXX";
client_secret = "XXXXXX";
redirect_uri = "https://oauth.powerbi.com/views/oauthredirect.html";
windowWidth = 800;
windowHeight = 800;
//Oauth base url for
OAuthBaseUrl = "https://accounts.zoho.eu/oauth/v2/auth?";
[DataSource.Kind="Zoho_Connector___V1.1", Publish="Zoho_Connector___V1.1.Publish"]
shared Zoho_Connector___V1.1.Contents = () =>
let
navTable = Web.Contents("https://www.zohoapis.eu/crm/v2/Leads")
in
navTable;
// Data Source Kind description
Zoho_Connector___V1.1 = [
Authentication = [
// enable both OAuth and Key based auth
OAuth = [
StartLogin = StartLogin,
FinishLogin = FinishLogin,
Refresh=Refresh
]
],
Label = Extension.LoadString("DataSourceLabel")
];
// Data Source UI publishing description
Zoho_Connector___V1.1.Publish = [
Beta = true,
Category = "Other",
ButtonText = { Extension.LoadString("ButtonTitle"), Extension.LoadString("ButtonHelp") },
LearnMoreUrl = "https://powerbi.microsoft.com/",
SourceImage = Zoho_Connector___V1.1.Icons,
SourceTypeImage = Zoho_Connector___V1.1.Icons
];
// OAuth2 flow definition
//
// Start Login thorugh OAUTH
StartLogin = (resourceUrl, state, display) =>
let
AuthorizeUrl = OAuthBaseUrl & Uri.BuildQueryString([
scope = "ZohoCRM.modules.all",
client_id = client_id,
redirect_uri = redirect_uri,
response_type = "code",
state = state,
access_type = "online"])
in
[
LoginUri = AuthorizeUrl,
CallbackUri = redirect_uri,
WindowHeight = windowHeight,
WindowWidth = windowWidth,
Context = null
];
// Finish Login through OAUTH
FinishLogin = (context, callbackUri, state) =>
let
Parts = Uri.Parts(callbackUri)[Query]
in
TokenMethod(Parts[code], "authorization_code");
TokenMethod = (code, grant_type) =>
let
Response = Web.Contents(OAuthBaseUrl & "/token", [
Content = Text.ToBinary(Uri.BuildQueryString([
grant_type = "authorization_code",
client_id = client_id,
client_secret = client_secret,
redirect_uri = redirect_uri,
code = code
]
)),
Headers=[#"Content-type" = "application/x-www-form-urlencoded",#"Accept" = "application/json"]]),
Parts = Json.Document(Response)
in
Parts;
Refresh = (resourceUrl, refresh_token) => TokenMethod(refresh_token, "refresh_token");
Zoho_Connector___V1.1.Icons = [
Icon16 = { Extension.Contents("Zoho_Connector___V1.116.png"), Extension.Contents("Zoho_Connector___V1.120.png"), Extension.Contents("Zoho_Connector___V1.124.png"), Extension.Contents("Zoho_Connector___V1.132.png") },
Icon32 = { Extension.Contents("Zoho_Connector___V1.132.png"), Extension.Contents("Zoho_Connector___V1.140.png"), Extension.Contents("Zoho_Connector___V1.148.png"), Extension.Contents("Zoho_Connector___V1.164.png") }
];
谢谢!
答案 0 :(得分:0)
您的代码中有错误(可能还有更多) 请看一下这个变量
OAuthBaseUrl = "https://accounts.zoho.eu/oauth/v2/auth?";
您的交换代码网址为
OAuthBaseUrl & "/token"
请关注OauthBaseUrl末尾的问号 它将解决这个问题
https://accounts.zoho.eu/oauth/v2/auth?/token
但应该
https://accounts.zoho.eu/oauth/v2/token
我的另一建议是将错误处理和日志添加到您的代码中。这将帮助您准确理解问题。您还可以获取响应标题和状态,以确保潜在问题的发生