Hello, I would like to help but if you can send me the error log records. Since I am not a moderator, I cannot directly guess what caused the error. If you send me the error codes I can give you an idea.
Hello, I’m sorry that the code descriptions are in Turkish. I wrote this code for myself before and was using it for a project. 95% of your problem will be solved, but you need to integrate it well into your own software.
// URL validation handler for Kakao Moment API
const axios = require('axios');
class KakaoMomentURLValidator {
constructor(apiKey, appId) {
this.apiKey = apiKey;
this.appId = appId;
this.baseUrl = 'https://api.moment.kakao.com/v1';
}
// Ana URL doğrulama fonksiyonu
async validateLandingURL(landingURL) {
try {
// Temel URL formatı kontrolü
if (!this.checkBasicURLFormat(landingURL)) {
return {
isValid: false,
error: 'Invalid URL format. Must start with http:// or https://'
};
}
// URL syntax kontrolü
if (!this.checkURLSyntax(landingURL)) {
return {
isValid: false,
error: 'Invalid URL syntax'
};
}
// Kakao Moment API'ye doğrulama isteği
const validationResult = await this.checkWithAPI(landingURL);
return validationResult;
} catch (error) {
return {
isValid: false,
error: `Validation error: ${error.message}`
};
}
}
// URL'nin temel format kontrolü
checkBasicURLFormat(url) {
const urlPattern = /^https?:\/\/.+/i;
return urlPattern.test(url);
}
// Gelişmiş URL syntax kontrolü
checkURLSyntax(url) {
try {
const parsedUrl = new URL(url);
// Boşluk ve satır sonu kontrolü
if (/\s/.test(url)) {
return false;
}
// Query parametreleri kontrolü
const queryParams = parsedUrl.searchParams;
for (const [key, value] of queryParams) {
// Query parametrelerinde URL formatı kontrolü
if (value.includes('http://') || value.includes('https://')) {
// Modern Kakao politikasına göre artık izin veriliyor
continue;
}
}
return true;
} catch {
return false;
}
}
// Kakao Moment API ile doğrulama
async checkWithAPI(url) {
try {
const response = await axios.post(
`${this.baseUrl}/validation/landing-url`,
{
landingUrl: url,
appId: this.appId
},
{
headers: {
'Authorization': `Bearer ${this.apiKey}`,
'Content-Type': 'application/json'
}
}
);
return {
isValid: true,
details: response.data
};
} catch (error) {
if (error.response) {
return {
isValid: false,
error: error.response.data.message || 'API validation failed'
};
}
throw error;
}
}
// Branch URL'leri için özel kontrol
async validateBranchURL(branchURL) {
// Branch URL'leri için gelişmiş kontroller
const basicValidation = await this.validateLandingURL(branchURL);
if (!basicValidation.isValid) {
return basicValidation;
}
// Branch URL'lerinin özel formatını kontrol et
const hasBranchFormat = this.checkBranchURLFormat(branchURL);
return {
isValid: hasBranchFormat,
type: 'branch',
details: {
supportsBranching: true,
originalValidation: basicValidation
}
};
}
// Branch URL format kontrolü
checkBranchURLFormat(url) {
// Branch URL'lerinin özel formatını kontrol et
const branchPattern = /^https?:\/\/[^/]+\/\?.*(?:[?&]url=https?:\/\/.+|[?&]redirect=https?:\/\/.+)/i;
return branchPattern.test(url);
}
}
// Kullanım örneği
const validator = new KakaoMomentURLValidator('YOUR_API_KEY', 'YOUR_APP_ID');
async function validateURL(url) {
// Normal URL doğrulama
const result = await validator.validateLandingURL(url);
console.log('Validation result:', result);
// Branch URL kontrolü
if (result.isValid) {
const branchResult = await validator.validateBranchURL(url);
console.log('Branch URL check:', branchResult);
}
}```
// Örnek kullanım
const validator = new KakaoMomentURLValidator(‘YOUR_API_KEY’, ‘YOUR_APP_ID’);
It seems like the recent policy update allows this, as indicated by the line,
if (value.includes('http://') || value.includes('https://')) {
// Modern Kakao politikasına göre artık izin veriliyor
continue;
I need to check the details regarding this specific Kakao policy update.
This type of URL was originally not allowed, but it now appears to be permitted. I need to check if the policy has changed and, if so, when the change occurred.
If you have an error code, please share it with me. We can analyze it in more detail. Since I am not a moderator, I cannot see the API requests you sent in detail.
딥링크의 경우 1번, 3번과 같이 URL 패턴을 분석하여 등록 불가 validation을 처리하지는 않고 있으나,
딥링크 형식을 등록할 경우 정상적으로 랜딩이 작동하지 않을 가능성이 높아 사용을 지양함을 적극 안내하고 있습니다.
추가적으로, 적용하신 유효성 정책 외 랜딩 내 ##을 두개 사용하는 랜딩도 등록이 불가하니 참고 부탁드립니다.