Нежелательная кнопка Facebook при первом использовании моего приложения FB в Coldfusion - PullRequest
1 голос
/ 16 апреля 2011

Я играю с приложением facebook, превращая их в iframe, используя coldfusion. Ниже приводится URL моего приложения http://apps.facebook.com/firstones/

Вместо прямого перехода на страницу разрешений, она идет на страницу, показанную ниже на рисунке. View that I get when use the application first time

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

Ниже приведен код URL моего холста [http://www.dkyadav.com/firstOnes/auth/]

index.cfm

<cfparam name="client_id" default="1234"> <!---same as app_id --->
<cfparam name="redirect_uri" default="http://www.dkyadav.com/firstOnes/auth/">
<cfparam name="redirect_uri_final" default="http://www.dkyadav.com/firstOnes/">
<cfparam name="scope" default="user_education_history,user_hometown,friends_education_history ">
<cfparam name="client_secret" default="56789"> <!---- App_secret key ---->


<cfif not isdefined('url.code')>
    <Cflocation url="https://www.facebook.com/dialog/oauth?client_id=#client_id#&redirect_uri=#redirect_uri#&scope=#scope#" >

<Cfelse>
    <Cfif isdefined('url.error')>
        <Cfoutput>
            #url.error#<br />
            Access denied.
        </Cfoutput>
    <cfelse>
        <cfoutput>#url.code#<br />
            <cfhttp url="https://graph.facebook.com/oauth/access_token" result="token">
                <cfhttpparam name="client_id" value="#client_id#" encoded="no" type="url">
                <cfhttpparam name="redirect_uri" value="#redirect_uri#" encoded="no" type="url">
                <cfhttpparam name="client_secret" value="#client_secret#" encoded="no" type="url">
                <cfhttpparam name="code" value="#url.code#" encoded="no" type="url">
            </cfhttp>
            <cflocation url="#redirect_uri_final#?#token.filecontent#" addtoken="no">
        </cfoutput>
    </Cfif>
</cfif>

И в http://www.dkyadav.com/firstOnes/index.cfm Я ищу access_token и у меня остальная часть моего приложения.

Я делаю вышеперечисленные вещи только в первый раз. Как только его разрешение получено, оно работает как обычно.

Вы можете попробовать запустить это приложение самостоятельно http://apps.facebook.com/firstones/ Пожалуйста, помогите и дайте мне знать, что я на самом деле скучаю. Спасибо !!

Ответы [ 2 ]

3 голосов
/ 17 апреля 2011

Я думаю, что у вас проблема в том, что ваша начальная страница отображения в Facebook фактически разрывается из фрейма.

Вы можете увидеть, как Javascript делает это на http://www.dkyadav.com/firstOnes/index.cfm в функции fbLogin():

top.location.href = "https://graph.facebook.com/oauth/authorize?...

top относится к окну в верхней части иерархии окон.что в вашем случае будет означать реальную домашнюю страницу Facebook с iframe в нем.

Надеюсь, это поможет!

0 голосов
/ 21 апреля 2011

Я думаю, что мне не нужен access_token, мне просто нужен oauth_token, который я получаю, расшифровав результат, полученный при отправке моего client_id в 'https://www.facebook.com/dialog/oauth....'

Ниже приведен код, который я использую:

<cfif isdefined('signed_request')>
    <cfoutput>
        <cfset b64 = signed_request>
        <!--- Split the param by the . --->
        <cfset raw_str = ListGetAt(b64, 2, ".")>
        <cfset res = Len(raw_str) % 4>
        <cfif res eq 2>
             <cfset raw_str &= "==">
        <cfelseif res eq 3>
             <cfset raw_str &= "=">
        </cfif>
        <!--- Base 64 Decode --->
        <cfset result = ToString(BinaryDecode(raw_str, "Base64"))>
        <!--- String to JSON --->
        <cfset json = DeserializeJSON(result)>

        <cfif StructKeyExists(json,'oauth_token')>

        <Cfset at = json.oauth_token>

            <cfhttp url="https://graph.facebook.com/me/friends?access_token=#at#" result="newsFeed" />

            <cfif IsJSON(newsFeed.filecontent)>
                <cfset cfData=DeserializeJSON(newsFeed.filecontent)>
                <cfdump var = #cfData#>
            <cfelse>
                filecontent not in json format   
            </cfif>
        <cfelse>
            <script>
                top.location.href='https://www.facebook.com/dialog/oauth?client_id=12345XXX&redirect_uri=http://apps.facebook.com/test_app/&scope=read_stream,email'
            </script>
        </cfif>

    </cfoutput>
</cfif>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...