2010-07-20 2 views
0

У меня есть сайт, который я интегрирую с Facebook (через FBML - JavaScript API).ASP.NET Cross-Domain Cookies & Facebook Connect

Я установил приложение на Facebook в соответствии с нормальным режимом, указав «Подключить URL» к домену моего веб-сайта.

Однако моя заявка имеет несколько привязок в IIS для того же сайта.

Такие, как:

www.bar.com.au

foo.com.au

Домены совершенно разные, никакого отношения во имя вообще - так Правило в стиле регулярного выражения невозможно (т. е. базовый домен). Домены были разными, благодаря сочетанию локализации и маркетинга. Имейте в виду, что эти домены выпекаются на уже действующем веб-сайте, другими словами, я не могу изменить эту архитектуру.

Есть ли способ я могу указать ОБА из этих доменов находится в ONE Параметры приложения Facebook для «Connect URL»? Или мне нужно создать несколько приложений?

Конечно, я не могу использовать параметр «Базовый домен», поскольку привязки не находятся в одном и том же поддомене.

У меня на самом деле около 7 привязок на моем веб-сайте, поэтому мне не нужно создавать 7 отдельных приложений Facebook, потому что это означает сохранение 7 наборов ключей/секретных пар API в моем приложении.

alt text http://www.freeimagehosting.net/uploads/268b234e2f.png

Что происходит, конечно, когда им на foobar.com.au, печенье Facebook не доступны для домена.

А пока я попытаюсь создать несколько ApiKey, но я думаю, что у меня могут возникнуть проблемы. Мне нужно идти: «Если домен - это, используйте этот ApiKey», то та же логика в каждом вызове Graph API. Беспорядочные вещи.

Таким образом, я думаю, что моя проблема/вопрос не вызвана Facebook Connect, ее природой HTTP Cookies по дизайну.

Как я могу легко получить доступ к этим файлам cookie? Мне нужно настроить третий сайт и направить туда всю логику cookie?

ответ

0

В моей нынешней ситуации таймфреймы мешали мне делать правильное решение, что и подчеркивало @Yuliy.

На данный момент я создал несколько приложений Facebook. Но держать его DRY, я отведенной все, что далеко позади открытые свойства:

private static string _ApiToken_Site1, _ApiToken_Site2; 
public static string ApiToken 
{ 
    get 
    { 
     if (Site1) return _ApiToken_Site1; 
     else if (Site2) return _ApiToken_Site2; 
    } 
} 

Не совсем чисто, но самое главное, я не должен коснуться моего существующего кода на всех, СМАРТС, чтобы работать, какие Api Key используется в этом свойстве.

Для нашей следующей версии проекта я откажусь от этого и, скорее всего, внедряю веб-службу WCF/ASMX, которая обрабатывает аутентификацию с одного места (т. Е. Отдельный веб-сервис на отдельном домене).

0

Не могли бы вы установить один из них в качестве своего сайта «Проверка подлинности Facebook» и направить туда весь трафик, связанный с FB Auth, а затем использовать одно из большого количества межсайтовых коммуникационных трюков, чтобы отправить токен на оригинальный сайт?

Другими словами, независимо от того, с какого сайта они поступают, вы будете использовать .foobar.com.au (например) в качестве URI перенаправления. Затем, когда они приходят на этот сайт, отметив, что они пришли из .foo.bar.com.au, вы перенаправляете их обратно туда, откуда они пришли, проходя через маркер доступа в рамках междоменной моды (querystring, post вары и т. д.)

+0

Не могли бы вы подробно остановиться? Также обратите внимание, im использует JavaScript API для аутентификации - так что мне нужен доступ к куки-файлам в домене. – RPM1984

+0

да .. я тоже смущен этим ответом. Не могли бы вы рассказать о том, что вы имеете в виду? Что такое * кросс-сайт трюки связи *? –

+0

Трюки с межсайтовой связью связаны с использованием какого-то механизма для передачи данных с одного сайта на другой, что является тем, что одна и та же политика происхождения должна усложнить. Один из методов - это запрос POST для межсайтового сайта (он же представляет собой отправку формы). Другим является перенаправление с токеном доступа в строке запроса. – Yuliy

0

Если вы хотите, чтобы *.foobar.com.au разрешалось, тогда установите свой базовый домен на номер foobar.com.au.

+1

Отредактированный вопрос - домен не всегда содержит Foobar. Это то, что происходит, когда вы перегружаете код, lol. – RPM1984

+0

Могу ли я спросить, каков ваш прецедент для нескольких базовых доменов? – daaku

+0

У нас есть несколько версий нашего сайта для разных мест. Таким образом, в Австралии наш домен может быть australia.foo.bar.com, а в америке это может быть www.foobar.com. Не собирайтесь делать эти домены - они были проданы таким образом, поэтому они не могут изменить их сейчас. – RPM1984