..:: MX Studio Fóruns ::..: Autenticando Facebook - ..:: MX Studio Fóruns ::..

Jump to content

Publicidade




Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Autenticando Facebook

#1 User is online   xanburzum 

  • Group: Administrador
  • Posts: 2073
  • Joined: 04-November 08

Posted 03 October 2011 - 03:31 PM

Autenticar sua aplicação no Facebook.Precisamos de dois arquivos fundamentais:
Arquivo de Função de acesso ao Facebook
Arquivo de configuração jSON para ASP (retirado do site oficial do jSON: LINK.
Você vai precisar de uma função de base64, eu adicionei a de Encode e Decode, caso precisem em outros projetos.
Você precisa adicionar o ID da sua aplicação, A URL de retorno (não precisa mudar a query que coloquei, facilita a autenticação em um arquivo só), e as permissões em sequencia (isso você acha no facebook developer).

Foi tudo salvo em Session, o token, o signed request e o ID do usuário do facebook:
set user = JSON.parse(base64Decode(playload))
session("signed_request") = request("signed_request")
session("oauth_token") = user.oauth_token
session("id_atual") = user.user_id
response.redirect("pagina.asp")


E Adicionei um Redirect para quando estiver autenticado:
Segue o Código completo:
<script language="javascript" runat="server" src="json2.asp"></script>
<!-- #include file="fb_app.asp" -->
<%
session.lcid = 1046
session.timeOut = 1440
server.scriptTimeOut = 999999999

if (request.QueryString("logar") = "") then
        main
        function main
                dim strJSON
                dim URL
                dim sToken
                dim user
                dim loc

                set cookie = get_facebook_cookie( FACEBOOK_APP_ID, FACEBOOK_SECRET )
                if cookie.count > 0 then
                        response.write "Logado... Ok! <br/>"
                        sToken = cookie("access_token")
                        url = "https://graph.facebook.com/me?access_token=" & sToken
                        strJSON = get_page_contents(URL) 

                        set user = JSON.parse(strJSON)
                        response.write cookie("access_token")
                else
                        link = "http://www.facebook.com/dialog/oauth?client_id=ID_DA_SUA_APLICAÇÃO&redirect_uri="&server.URLEncode("http://apps.facebook.com/NOME_DA_MINHA_APP/autenticacao.asp?logar=ok")&"&scope=offline_access,user_location,email,publish_stream,user_birthday,read_friendlists"
                        response.write("<script>top.location.href='" & link & "';</script>")
                end if
        end function
else
        const BASE_64_MAP_INIT ="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
        dim nl
        dim Base64EncMap(63)
        dim Base64DecMap(127)

        public sub initCodecs()
                nl = "<P>" & chr(13) & chr(10)
                dim max, idx
                   max = len(BASE_64_MAP_INIT)
                for idx = 0 to max - 1
                         Base64EncMap(idx) = mid(BASE_64_MAP_INIT, idx + 1, 1)
                next
                for idx = 0 to max - 1
                         Base64DecMap(asc(Base64EncMap(idx))) = idx
                next
        end sub

        public function base64Encode(plain)
                if len(plain) = 0 then
                         base64Encode = ""
                         exit function
                end if
                dim ret, ndx, by3, first, second, third
                by3 = (len(plain) \ 3) * 3
                ndx = 1
                do while ndx <= by3
                         first  = asc(mid(plain, ndx + 0, 1))
                         second = asc(mid(plain, ndx + 1, 1))
                         third  = asc(mid(plain, ndx + 2, 1))
                         ret = ret & Base64EncMap((first \ 4) and 63)
                         ret = ret & Base64EncMap(((first * 16) and 48) + ((second \ 16) and 15))
                         ret = ret & Base64EncMap(((second * 4) and 60) + ((third \ 64) and 3))
                         ret = ret & Base64EncMap(third and 63)
                         ndx = ndx + 3
                loop
                if by3 < len(plain) then
                         first  = asc(mid(plain, ndx + 0, 1))
                         ret = ret & Base64EncMap((first \ 4) and 63)
                         if (len(plain) MOD 3) = 2 then
                                  second = asc(mid(plain, ndx+1, 1))
                                  ret = ret & Base64EncMap(((first * 16) and 48) + ((second \ 16) and 15))
                                  ret = ret & Base64EncMap(((second * 4) and 60))
                         else
                                  ret = ret & Base64EncMap((first * 16) and 48)
                                  ret = ret & "="
                         end if
                         ret = ret & "="
                end if
                base64Encode = ret
        end function

        public function base64Decode(scrambled)
                if len(scrambled) = 0 then
                         base64Decode = ""
                         exit function
                end if
                dim realLen
                realLen = len(scrambled)
                do while mid(scrambled, realLen, 1) = "="
                         realLen = realLen - 1
                loop
                dim ret, ndx, by4, first, second, third, fourth
                ret = ""
                by4 = (realLen \ 4) * 4
                ndx = 1
                do while ndx <= by4
                         first  = Base64DecMap(asc(mid(scrambled, ndx+0, 1)))
                         second = Base64DecMap(asc(mid(scrambled, ndx+1, 1)))
                         third  = Base64DecMap(asc(mid(scrambled, ndx+2, 1)))
                         fourth = Base64DecMap(asc(mid(scrambled, ndx+3, 1)))
                         ret = ret & chr(((first * 4) and 255) + ((second \ 16) and 3))
                         ret = ret & chr(((second * 16) and 255) + ((third \ 4) and 15))
                         ret = ret & chr(((third * 64) and 255) + (fourth and 63))
                         ndx = ndx + 4
                loop
                if ndx < realLen then
                         first  = Base64DecMap(asc(mid(scrambled, ndx+0, 1)))
                         second = Base64DecMap(asc(mid(scrambled, ndx+1, 1)))
                         ret = ret & chr(((first * 4) and 255) + ((second \ 16) and 3))
                         if realLen mod 4 = 3 then
                                  third = Base64DecMap(asc(mid(scrambled,ndx+2,1)))
                                  ret = ret & chr(((second * 16) and 255) + ((third \ 4) and 15))
                         end if
                end if
                base64Decode = ret
        end function
        call initCodecs

        splitvar = split(request("signed_request"), ".")
        encoded_sig = splitvar(0)
        playload = splitvar(1)

        set user = JSON.parse(base64Decode(playload))
        session("signed_request") = request("signed_request")
        session("oauth_token") = user.oauth_token
        session("id_atual") = user.user_id
        response.redirect("animacao.asp")
end if
%>
contribuição de meu amigo Ted´k
0

#2 User is offline   Ted k' 

  • Group: Moderadores
  • Posts: 123
  • Joined: 08-September 08

Posted 21 October 2011 - 12:02 PM

Vlw Xanildo pela postagem, faltou só o link do arquivo facebook:
http://tedk.com.br/b.../fb_app.asp.txt
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic



Publicidade




1 User(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)