Histórico da Página
...
Bloco de código | ||
---|---|---|
| ||
#Include 'Protheus.ch'
#Include 'Parmtype.ch'
User Function fb()
Local oAuth, cResult, oBj
oAuth := FWFaceBook():New("", "") // App Key e App Secret
oAuth:GetMethods(.T.)
I18nConOut("#1#1#2#1", {CRLF, "Waiting for response..."})
oAuth:SetScopes({"publish_actions"})
// oAuth:SetScopes({"user_friends"})
// oAuth:SetUniqueToken("CAAGHtCBf4fEBAFIUwX46WkUQ7ZC....")
// cResult := oAuth:Access("https://graph.facebook.com/me/", "fields=id,name,picture", , .T.)
// cResult := oAuth:Access("https://graph.facebook.com/me/feed")
// cResult := oAuth:Access("https://graph.facebook.com/me/permissions")
cResult := oAuth:Access("https://graph.facebook.com/me/feed", , "message=Hello, World. By Framework Protheus", .F.)
I18nConOut("#1Result: #2 #1", {CRLF, cResult})
oBj := Nil
If FWJsonDeserialize(cResult, @oBj)
cResult := oAuth:Access(i18n("https://graph.facebook.com/#1", {oBj:id}), "method=delete", , .F.)
EndIf
I18nConOut("#1Result: #2 #1", {CRLF, cResult})
I18nConOut("#1Token used: #2 #1", {CRLF, oAuth:GetToken()})
oAuth:Destroy()
Return
Class FWFaceBook From FWoAuth2Client
Data aScopes
Method New() CONSTRUCTOR
Method Destroy()
Method ClassName()
Method SetScopes()
Method Access()
Method Debug_Token()
Method Valid_Token()
EndClass
Method New(cConsumer,cSecret) Class FWFaceBook
Local oURL := FwoAuth2Url():New("https://www.facebook.com/dialog/oauth", "https://graph.facebook.com/oauth/access_token")
_Super:New(cConsumer,cSecret,oURL)
::SetScopes({"basic_info"})
::SetAsCode()
::SetQueryAuthorization()
Return Self
Method Destroy() Class FWFaceBook
::aScopes := aSize(::aScopes, 0)
Return _Super:Destroy()
Method ClassName() Class FWFaceBook
Return "FWFaceBook"
Method SetScopes(aScopes) Class FWFaceBook
Local cScope
Local nI
PARAMTYPE 0 VAR aScopes AS ARRAY OPTIONAL Default {}
::aScopes := aScopes
For nI := 1 to Len(aScopes)
If nI == 1
cScope := "scope="+aScopes[nI]
Else
cScope += "," + aScopes[nI]
EndIf
Next
::SetAuthOptions(cScope)
Return Len(aScopes) > 0
Method Access(cURLResource, cQuery, cBody, lGet, aHeader) Class FWFaceBook
Local cResult := ""
Default lGet := .T.
If !::Valid_Token()
::ClearToken()
EndIf
cResult := _Super:Access(cURLResource, cQuery, cBody, lGet, @aHeader)
Return cResult
Method Debug_Token(cToken) Class FWFaceBook
Local cResult
Local aHeaderRet
Local oDebug
Default cToken := ::GetToken()
If !Empty(cToken)
cResult := ::Get(I18n("https://graph.facebook.com/debug_token?input_token=#1&access_token=#1", {cToken}), , , @aHeaderRet)
If aScan(aHeaderRet, {|x| At("content-type:", Lower(x)) > 0 .And. At("application/json", Lower(x)) > 0 }) > 0
FWJsonDeserialize(cResult, @oDebug)
EndIf
EndIf
Return oDebug
Method Valid_Token() Class FWFaceBook
Local lRet := .F.
Local cToken := ::GetToken()
Local oDebug
Local nI
Local aProps
If !Empty(cToken)
oDebug := ::Debug_Token(cToken)
If oDebug != Nil
aProps := ClassDataArr(oDebug)
If aScan(aProps, {|x| lower(x[1]) == 'data' }) > 0
If oDebug:data:is_valid
lRet := .T.
For nI := 1 to Len(::aScopes)
If !aScan(oDebug:data:scopes, {|x| x == ::aScopes[nI]}) > 0
lRet := .F.
Exit
EndIf
Next
EndIf
EndIf
EndIf
EndIf
Return lRet |
...
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas