Histórico da Página
Exemplo de uso da Classe FWoAuth2Client com Client para Facebook.
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 |
Templatedocumentos |
---|
HTML |
---|
<style> div.theme-default .ia-splitter #main { margin-left: 0px; } .ia-fixed-sidebar, .ia-splitter-left { display: none; } #main { padding-left: 10px; padding-right: 10px; overflow-x: hidden; } .aui-header-primary .aui-nav, .aui-page-panel { margin-left: 0px !important; } .aui-header-primary .aui-nav { margin-left: 0px !important; } </style> |
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas