diff --git a/public/client-metadata.json b/public/.well-known/client-metadata.json
similarity index 88%
rename from public/client-metadata.json
rename to public/.well-known/client-metadata.json
index 2b8e788..1d3a78e 100644
--- a/public/client-metadata.json
+++ b/public/.well-known/client-metadata.json
@@ -1,5 +1,5 @@
{
- "client_id": "https://card.syui.ai/client-metadata.json",
+ "client_id": "https://card.syui.ai/.well-known/client-metadata.json",
"client_name": "Aicard",
"client_uri": "https://card.syui.ai",
"logo_uri": "https://card.syui.ai/icon.png",
diff --git a/public/oauth/callback/index.html b/public/oauth/callback/index.html
index 845f82c..56b21b9 100644
--- a/public/oauth/callback/index.html
+++ b/public/oauth/callback/index.html
@@ -59,6 +59,9 @@
const error = params.get('error');
const errorDescription = params.get('error_description');
+ console.log('OAuth callback page loaded');
+ console.log('Params:', { code: code ? 'present' : 'missing', state: state ? 'present' : 'missing' });
+
// エラーチェック
if (error) {
document.getElementById('status').innerHTML =
@@ -75,20 +78,40 @@
// React Nativeアプリに戻す (deep link)
const deepLink = `aicard://oauth/callback?code=${encodeURIComponent(code)}&state=${encodeURIComponent(state)}`;
- document.getElementById('status').textContent = 'アプリに戻っています...';
+ console.log('Deep link:', deepLink);
+ document.getElementById('status').innerHTML = 'アプリに戻っています...
' + deepLink + '';
- // Deep linkを開く
- window.location.href = deepLink;
+ // Method 1: iframe approach
+ const iframe = document.createElement('iframe');
+ iframe.style.display = 'none';
+ iframe.src = deepLink;
+ document.body.appendChild(iframe);
- // フォールバック: 3秒後にも試行
+ // Method 2: Direct window.location
setTimeout(() => {
+ console.log('Attempting window.location redirect');
window.location.href = deepLink;
+ }, 500);
+
+ // Method 3: Link click simulation
+ setTimeout(() => {
+ console.log('Attempting link click');
+ const link = document.createElement('a');
+ link.href = deepLink;
+ link.click();
}, 1000);
+ // Method 4: Window.open
+ setTimeout(() => {
+ console.log('Attempting window.open');
+ window.open(deepLink, '_self');
+ }, 1500);
+
// フォールバック: 5秒後にメッセージ表示
setTimeout(() => {
document.getElementById('status').innerHTML =
- '