Xodera Plugins · Bubble Native
Xodera B2 Files Native
Mantenha os anexos do aplicativo em seu próprio armazenamento Backblaze B2. Permita que usuários autorizados enviem, naveguem e baixem arquivos, e escolha explicitamente quando um arquivo pode ser compartilhado publicamente.
Public beta guides · Haptics instructions are in its Bubble listing
Public beta offer: free Bubble install · 7-day card trial, then US$1.50/month per plugin/project.
Documentação revisada 6 novembro 2026
Exemplos práticos
Armazene um anexo de trabalho no bucket privado do desenvolvedor
Um trabalho Bubble precisa de uma referência de armazenamento durável sem tratar uma URL de download que expira como a identidade do arquivo.
`bucket_binding_id = an allowed binding to your own private bucket`; `local_uri` dinâmico, `display_name`, `mime_type` e `expected_size` descrevem o arquivo local selecionado.
Planejado: Check local source → Upload file → aguarde `upload_verified`. Seu fluxo de trabalho então armazena `asset_ref` e metadados no registro de Trabalho de propriedade.
Use `asset_ref`, `size_bytes`, `mime_type` e `upload_status`. Mais tarde, Resolve private read pode fornecer uma URL temporária para uso autorizado.
Se a gravação no banco de dados falhar após `upload_verified`, tente novamente a atualização do BD com a mesma referência de recurso em vez de outro upload. Verifique o resultado de `upload_pending` usando Check or recover upload status e o mesmo ID de upload.
Planejado. Sua conta B2 paga o armazenamento e as cobranças de download.
Crie uma galeria de anexos própria com registros de arquivos duráveis
Uma galeria de arquivos precisa de nomes, tipos e paginação, além de um modo de abrir o recurso selecionado posteriormente.
O registro de Arquivo do seu aplicativo armazena um `asset_ref` aceito, nome de exibição, MIME e relação de proprietário/trabalho após um upload verificado; não use um URI local como sua identidade na nuvem.
Planejado: use List my B2 files para construir a lista de anexos. asset_refs identifica os arquivos; valores no mesmo índice fornecem seus nomes e tipos. Selecionar um arquivo passa seu asset_ref para Get asset metadata ou Download accepted version.
`has_more` e `next_cursor` pertencem à consulta atual. Um download concluído retorna `local_output_uri`; é uma cópia local ao dispositivo, não um link público permanente.
Redefina a paginação após alterações de vinculação/conta/consulta. Em `transfer_error`, preserve o File Thing existente e mostre `error_code`; não o substitua silenciosamente por outra versão do provedor.
Planejado. Sua conta B2 paga o armazenamento e as cobranças de download.
Torne a publicação e a exclusão de versão exata deliberadas
A equipe não deve expor acidentalmente um anexo privado ou excluir todas as versões ao substituir uma imagem.
`asset_ref = the selected accepted version`; a vinculação do bucket e as permissões de arquivo do aplicativo devem permitir a operação solicitada.
Mostre a visibilidade atual, solicite confirmação explícita e então Change public sharing. Para remoção, chame Delete accepted version com confirmação; mantenha os metadados do aplicativo até que o resultado confirmado seja conhecido.
Após `share_changed`, consuma `visibility` e `public_url` somente quando o compartilhamento público foi explicitamente autorizado. Após `delete_completed`, atualize o registro de Arquivo de propriedade; `delete_pending` não é exclusão final.
Verifique o resultado de uma operação incerta em vez de presumir sucesso. URLs de leitura do provedor emitidas anteriormente podem permanecer válidas até expirarem; remover uma linha de banco de dados ou desativar o compartilhamento não recupera os bytes já baixados.
Planejado. Sua conta B2 paga o armazenamento e as cobranças de download.
O que funciona agora
Plugin planejado. Ainda não está instalado ou disponível para uso. O guia abaixo mostra o fluxo de arquivos pretendido.
Crie o fluxo de trabalho
Planeado
Fluxo de trabalho planejado. Ainda não está disponível na beta atual.
Estes exemplos utilizam registros de aplicativo como Lesson, Message e Order. Substitua-os pelos seus próprios tipos de dados e nomes de elementos. Endereços de mídia de exemplo devem ser substituídos pelos seus próprios arquivos.
Planejado: nas configurações do seu projeto, escolha seu armazenamento B2 e o bucket permitido. Defina sua privacidade, prefixo de pasta e tipos e tamanhos de arquivo aceitos.
Use List B2 bindings para exibir as opções de armazenamento permitidas. Use List my B2 files para mostrar os arquivos do usuário atual e Get my B2 file info para detalhes.
Escolha um arquivo. Defina bucket_binding_id, local_uri, display_name, mime_type e expected_size, então execute Upload file. Mostre o progresso, mas aguarde upload_verified antes de considerar o arquivo como salvo.
Salve asset_ref no registro do seu aplicativo. Use‑o para Get asset metadata, Resolve private read ou Download accepted version. Change public sharing e Delete accepted version exigem uma confirmação separada.
Configure uma vez
A ativação de chave está planejada para este plugin. Crie ou escolha seu projeto de aplicativo Bubble em BestPlugins → Dashboard → Plugins. Escolha Xodera B2 Files Native, copie sua chave, então abra Bubble → Plugins → Xodera B2 Files Native e cole-a em project_api_key. Salve uma vez; depois use as ações abaixo. Cada plugin em cada projeto tem sua própria chave.
Use sua própria conta Backblaze B2 e escolha o bucket para este aplicativo. Decida quem pode ler e enviar arquivos. Armazene os nomes dos campos de usuário sim/não relevantes em b2_reader_permission_field e b2_writer_permission_field; os padrões são b2_files_reader e b2_files_writer. Apenas um administrador autorizado deve alterar essas permissões de usuário.
Configure uma vez
- Crie ou escolha seu projeto de aplicativo Bubble em BestPlugins → Dashboard → Plugins.
- Escolha este plugin e copie sua chave de projeto.
- Planejado: Abra Bubble → Plugins → Xodera B2 Files Native; cole a chave em project_api_key e salve.
- Adicione o elemento, escolha os dados do seu aplicativo e construa o fluxo de trabalho abaixo.
- Acesso beta privado apenas por enquanto. Instalação pública e ativação paga ainda não estão disponíveis.
Instalação e assinatura
For Audio Player, Video Player, Photo Editor, Audio Recorder, Files Kit and Haptics: free Bubble installation, a 7-day trial with a card, then US$1.50 per month per plugin and app project. Development and production are included, with no operation cap. File-size and feature limits still apply. Review billing and cancellation before confirming. Other plugins remain unavailable for purchase.
Salve o resultado no seu aplicativo
Anexo de exemplo: asset_ref, relatório/pedido relacionado, proprietário, display_name, mime_type e size_bytes. Salve esses itens após upload_verified. Use asset_ref para reabrir um arquivo mais tarde; um endereço de leitura temporário ou um caminho em um dispositivo não é uma referência permanente ao arquivo. Se a gravação do registro no banco de dados falhar, tente salvar esse registro novamente em vez de enviar o arquivo outra vez.
Falha, cancelamento e recuperação
Se o resultado de um upload for desconhecido, mantenha upload_id e use Check or recover upload status. Não envie outra cópia automaticamente. Cancelar afeta a transferência incompleta, não um arquivo já salvo. Se o acesso expirar, solicite o arquivo novamente em vez de reutilizar um endereço temporário antigo.
Capacidades e limites
Tamanho máximo de arquivo planejado: 256 MiB, ou um limite de bucket inferior que você escolher. As cobranças de armazenamento e download da Backblaze pertencem à sua conta B2. Arquivos em um bucket público são públicos mesmo quando o registro do aplicativo relacionado é privado. Não há promessa de verificação de vírus, upload multipart, pausa ou recuperação após a finalização do aplicativo.
Configurações, ações e resultados
Use esses nomes em Bubble. Recursos planejados são marcados separadamente.
Configurações beta disponíveis
Configurações do elemento
bucket_binding_id · textlocal_uri · textdisplay_name · textmime_type · textexpected_size · numbermetadata_json · textasset_ref · textis_active · yes_nodisabled · yes_nolanguage · textui_text_json · texttitle · textshow_preview · yes_noshow_provider_browse · yes_noEstados
status · textis_busy · yes_noupload_id · textupload_status · textasset_ref · textdisplay_name · textmime_type · textsize_bytes · numberbytes_sent · numberprogress · numberprogress_indeterminate · yes_notemporary_read_url · textread_expires_at · textlocal_output_uri · textpublic_url · textvisibility · textnext_cursor · texthas_more · yes_noquery_revision · textfiles_json · textbuckets_json · textremote_files_json · textremote_next_cursor · textremote_has_more · yes_noremote_query_revision · textbucket_binding_id · textcleanup_pending · yes_noerror_code · texterror_message · textEventos
file_selectedupload_startedupload_transport_completedupload_verifiedupload_pendingbuckets_loadedbucket_selectedlist_loadedmetadata_loadedread_resolveddownload_completedshare_changeddelete_completeddelete_pendingbrowse_loadedtransfer_cancelledcleanup_pendingtransfer_errorsession_clearedAções e suas entradas
List allowed bucketsSelect bucket bindingCheck local sourceUpload fileCheck or recover upload statusCancel owned transferClear local sessionList application filesRefresh application filesLoad more application filesSelect asset referenceGet asset metadataResolve private readDownload accepted versionBrowse provider filesChange public sharingDelete accepted versionConfigurações do elemento · 14
Fluxo de trabalho planejado. Ainda não está disponível na beta atual.
bucket_binding_idtext · Padrão: ""- Valor de exemplo
<binding returned by List B2 bindings> - Exemplo de expressão Bubble
Selected Binding's binding_id - Opção de armazenamento retornada por List B2 bindings. Use seu ID para este arquivo.
local_uritext · Padrão: ""- Valor de exemplo
file:///app-cache/attachment.jpg - Exemplo de expressão Bubble
Offline Files' local_uri - Localização de arquivo legível neste dispositivo. Não é um link de download online.
display_nametext · Padrão: ""- Valor de exemplo
report-photo.jpg - Exemplo de expressão Bubble
Selected Attachment's display_name - Use o valor do registro comercial atual; valide-o contra os limites abaixo.
mime_typetext · Padrão: ""- Valor de exemplo
image/jpeg - Exemplo de expressão Bubble
Photo Editor's output_mime - Use o valor do registro comercial atual; valide-o contra os limites abaixo.
expected_sizenumber · Padrão: 0- Valor de exemplo
246975 - Exemplo de expressão Bubble
Offline Files' size_bytes - Use o valor do registro comercial atual; valide-o contra os limites abaixo.
metadata_jsontext · Padrão: ""- Valor de exemplo
{"label":"field-report"} - Exemplo de expressão Bubble
Selected Attachment's safe_metadata_json - JSON opcional com informações do aplicativo, como um rótulo de relatório. Mantenha pequeno e evite dados pessoais.
asset_reftext · Padrão: ""- Valor de exemplo
<returned asset_ref> - Exemplo de expressão Bubble
Selected B2Asset's asset_ref - Identidade estável e opaca de ativo aceito do serviço. Selecioná‑la nunca contorna a autorização do usuário.
is_activeyes_no · Padrão: true- Valor de exemplo
yes - Exemplo de expressão Bubble
GuideHost's view_is_active (your yes/no custom state) - Defina sim enquanto esta visualização estiver aberta. Defina não ao sair, para que a reprodução ou o trabalho atual possam parar.
disabledyes_no · Padrão: false- Valor de exemplo
no - Exemplo de expressão Bubble
GuideHost's is_busy (your yes/no custom state) - Desative o elemento enquanto seu aplicativo estiver ocupado ou esta ação estiver indisponível.
languagetext · Padrão: "auto"- Valor de exemplo
uk - Exemplo de expressão Bubble
Current User's preferred_language - Defina language=auto para seguir um idioma de dispositivo ou navegador suportado. Insira um código de idioma suportado para escolhê-lo explicitamente.
ui_text_jsontext · Padrão: ""- Valor de exemplo
{} - Exemplo de expressão Bubble
App Settings' player_labels_json (supported keys only) - JSON opcional com rótulos de botão suportados. Deixe vazio para usar o texto incorporado.
titletext · Padrão: ""- Valor de exemplo
Lesson 4 — review - Exemplo de expressão Bubble
Selected Lesson's name - Texto visível do aplicativo; vazio usa a cópia localizada incorporada onde suportado. Sem credenciais.
show_previewyes_no · Padrão: false- Valor de exemplo
yes - Exemplo de expressão Bubble
App Settings' b2_preview - Mostrar ou ocultar a pré‑visualização do arquivo.
show_provider_browseyes_no · Padrão: false- Valor de exemplo
no - Exemplo de expressão Bubble
Current User's authorized_browse_UI (presentation only) - Mostrar ou ocultar os controles de navegação de armazenamento para usuários permitidos.
Ações e suas entradas · 20
Fluxo de trabalho planejado. Ainda não está disponível na beta atual.
List allowed buckets
Sem parâmetros de ação
Select bucket binding
binding_idtext · Padrão: —- Valor de exemplo
<returned allowed binding ID> - Exemplo de expressão Bubble
Selected Binding's binding_id - Use o valor do registro comercial atual; valide-o contra os limites abaixo.
Check local source
Sem parâmetros de ação
Upload file
acknowledge_public_bytesyes_no · Padrão: —- Valor de exemplo
no - Exemplo de expressão Bubble
Public bucket disclosure Checkbox is checked (private bucket: no) - Use o valor do registro comercial atual; valide-o contra os limites abaixo.
confirm_retryyes_no · Padrão: —- Valor de exemplo
no - Exemplo de expressão Bubble
Retry Checkbox is checked after confirmed clean pending status - Use o valor do registro comercial atual; valide-o contra os limites abaixo.
Check or recover upload status
upload_idtext · Padrão: —- Valor de exemplo
<original returned upload_id> - Exemplo de expressão Bubble
Current UploadIntent's upload_id - Use o valor do registro comercial atual; valide-o contra os limites abaixo.
Cancel owned transfer
Sem parâmetros de ação
Clear local session
Sem parâmetros de ação
List application files
Sem parâmetros de ação
Refresh application files
Sem parâmetros de ação
Load more application files
Sem parâmetros de ação
Select asset reference
asset_reftext · Padrão: —- Valor de exemplo
<returned asset_ref> - Exemplo de expressão Bubble
Selected B2Asset's asset_ref - Identidade estável e opaca de ativo aceito do serviço. Selecioná‑la nunca contorna a autorização do usuário.
Get asset metadata
asset_reftext · Padrão: —- Valor de exemplo
<returned asset_ref> - Exemplo de expressão Bubble
Selected B2Asset's asset_ref - Identidade estável e opaca de ativo aceito do serviço. Selecioná‑la nunca contorna a autorização do usuário.
Resolve private read
asset_reftext · Padrão: —- Valor de exemplo
<returned asset_ref> - Exemplo de expressão Bubble
Selected B2Asset's asset_ref - Identidade estável e opaca de ativo aceito do serviço. Selecioná‑la nunca contorna a autorização do usuário.
Download accepted version
asset_reftext · Padrão: —- Valor de exemplo
<returned asset_ref> - Exemplo de expressão Bubble
Selected B2Asset's asset_ref - Identidade estável e opaca de ativo aceito do serviço. Selecioná‑la nunca contorna a autorização do usuário.
Browse provider files
prefixtext · Padrão: —- Valor de exemplo
"" - Exemplo de expressão Bubble
Authorized Browse Settings' prefix - Use o valor do registro comercial atual; valide-o contra os limites abaixo.
load_moreyes_no · Padrão: —- Valor de exemplo
no - Exemplo de expressão Bubble
Load More button only, for unchanged query - Use o valor do registro comercial atual; valide-o contra os limites abaixo.
Change public sharing
asset_reftext · Padrão: —- Valor de exemplo
<returned asset_ref> - Exemplo de expressão Bubble
Selected B2Asset's asset_ref - Identidade estável e opaca de ativo aceito do serviço. Selecioná‑la nunca contorna a autorização do usuário.
enabledyes_no · Padrão: —- Valor de exemplo
no - Exemplo de expressão Bubble
Public Share Checkbox is checked after separate confirmation - Use o valor do registro comercial atual; valide-o contra os limites abaixo.
confirmyes_no · Padrão: —- Valor de exemplo
yes — explicit confirmation only - Exemplo de expressão Bubble
Confirm Checkbox is checked - Use o valor do registro comercial atual; valide-o contra os limites abaixo.
Delete accepted version
asset_reftext · Padrão: —- Valor de exemplo
<returned asset_ref> - Exemplo de expressão Bubble
Selected B2Asset's asset_ref - Identidade estável e opaca de ativo aceito do serviço. Selecioná‑la nunca contorna a autorização do usuário.
confirmyes_no · Padrão: —- Valor de exemplo
yes — explicit confirmation only - Exemplo de expressão Bubble
Confirm Checkbox is checked - Use o valor do registro comercial atual; valide-o contra os limites abaixo.
List B2 bindings
environmenttext · Padrão: —- Valor de exemplo
development - Exemplo de expressão Bubble
App Settings' selected_environment - Use o valor do registro comercial atual; valide-o contra os limites abaixo.
Devoluções
ok · yes/nostatus · texterror_code · textbinding_ids · text listlabels · text listprivacy · text listmax_size_bytes · number listList my B2 files
environmenttext · Padrão: —- Valor de exemplo
development - Exemplo de expressão Bubble
App Settings' selected_environment - Use o valor do registro comercial atual; valide-o contra os limites abaixo.
binding_idtext · Padrão: —- Valor de exemplo
<returned allowed binding ID> - Exemplo de expressão Bubble
Selected Binding's binding_id - Use o valor do registro comercial atual; valide-o contra os limites abaixo.
limitnumber · Padrão: —- Valor de exemplo
50 - Exemplo de expressão Bubble
Gallery Settings' page_size - Use o valor do registro comercial atual; valide-o contra os limites abaixo.
cursortext · Padrão: —- Valor de exemplo
"" - Exemplo de expressão Bubble
Previous List my B2 files result's next_cursor; empty on first page - Use o valor do registro comercial atual; valide-o contra os limites abaixo.
Devoluções
ok · yes/nostatus · texterror_code · textasset_refs · text listdisplay_names · text listmime_types · text listsize_bytes · number listcreated_ats · text listvisibility · text listpublic_urls · text listprovider_status · text listinspection_status · text listmetadata_labels · text listhas_more · yes/nonext_cursor · textquery_revision · textGet my B2 file info
environmenttext · Padrão: —- Valor de exemplo
development - Exemplo de expressão Bubble
App Settings' selected_environment - Use o valor do registro comercial atual; valide-o contra os limites abaixo.
binding_idtext · Padrão: —- Valor de exemplo
<returned allowed binding ID> - Exemplo de expressão Bubble
Selected Binding's binding_id - Use o valor do registro comercial atual; valide-o contra os limites abaixo.
asset_reftext · Padrão: —- Valor de exemplo
<returned asset_ref> - Exemplo de expressão Bubble
Selected B2Asset's asset_ref - Identidade estável e opaca de ativo aceito do serviço. Selecioná‑la nunca contorna a autorização do usuário.
Devoluções
ok · yes/nostatus · texterror_code · textasset_ref · textdisplay_name · textmime_type · textsize_bytes · numbercreated_at · textvisibility · textpublic_url · textprovider_status · textinspection_status · textmetadata_label · textEstados e eventos
Fluxo de trabalho planejado. Ainda não está disponível na beta atual.
Estados
status · textResultado atual desta ação. Use o evento de conclusão correspondente antes de salvar o sucesso.
is_busy · yes_noO trabalho ainda está em andamento. Aguarde antes de iniciar outra ação.
upload_id · textIdentificador para este item ou ação. Mantenha-o com o registro de aplicativo correspondente. Use o mesmo identificador de solicitação ao tentar novamente um resultado incerto.
upload_status · textResultado atual desta ação. Use o evento de conclusão correspondente antes de salvar o sucesso.
asset_ref · textIdentificador para este item ou ação. Mantenha-o com o registro de aplicativo correspondente. Use o mesmo identificador de solicitação ao tentar novamente um resultado incerto.
display_name · textValor atual do item selecionado. Leia-o após o evento relacionado.
mime_type · textValor atual do item selecionado. Leia-o após o evento relacionado.
size_bytes · numberValor atual do item selecionado. Leia-o após o evento relacionado.
bytes_sent · numberValor atual do item selecionado. Leia-o após o evento relacionado.
progress · numberValor atual do item selecionado. Leia-o após o evento relacionado.
progress_indeterminate · yes_noValor atual do item selecionado. Leia-o após o evento relacionado.
temporary_read_url · textValor atual do item selecionado. Leia-o após o evento relacionado.
read_expires_at · textValor atual do item selecionado. Leia-o após o evento relacionado.
local_output_uri · textLocalização do arquivo neste dispositivo. Salve ou faça upload do arquivo separadamente se precisar mantê‑lo online.
public_url · textValor atual do item selecionado. Leia-o após o evento relacionado.
visibility · textValor atual do item selecionado. Leia-o após o evento relacionado.
next_cursor · textValor atual do item selecionado. Leia-o após o evento relacionado.
has_more · yes_noValor atual do item selecionado. Leia-o após o evento relacionado.
query_revision · textValor atual do item selecionado. Leia-o após o evento relacionado.
files_json · textValor atual do item selecionado. Leia-o após o evento relacionado.
buckets_json · textValor atual do item selecionado. Leia-o após o evento relacionado.
remote_files_json · textValor atual do item selecionado. Leia-o após o evento relacionado.
remote_next_cursor · textValor atual do item selecionado. Leia-o após o evento relacionado.
remote_has_more · yes_noValor atual do item selecionado. Leia-o após o evento relacionado.
remote_query_revision · textValor atual do item selecionado. Leia-o após o evento relacionado.
bucket_binding_id · textIdentificador para este item ou ação. Mantenha-o com o registro de aplicativo correspondente. Use o mesmo identificador de solicitação ao tentar novamente um resultado incerto.
cleanup_pending · yes_noValor atual do item selecionado. Leia-o após o evento relacionado.
error_code · textInformações de erro da última ação. Exiba uma mensagem útil e ofereça a tentativa de novo relevante.
error_message · textInformações de erro da última ação. Exiba uma mensagem útil e ofereça a tentativa de novo relevante.
Eventos
file_selectedQuando este evento ocorrer, leia os estados relacionados do mesmo elemento.
upload_startedQuando este evento ocorrer, leia os estados relacionados do mesmo elemento.
upload_transport_completedQuando este evento ocorrer, leia os estados relacionados do mesmo elemento.
upload_verifiedQuando este evento ocorrer, leia os estados relacionados do mesmo elemento.
upload_pendingQuando este evento ocorrer, leia os estados relacionados do mesmo elemento.
buckets_loadedQuando este evento ocorrer, leia os estados relacionados do mesmo elemento.
bucket_selectedQuando este evento ocorrer, leia os estados relacionados do mesmo elemento.
list_loadedQuando este evento ocorrer, leia os estados relacionados do mesmo elemento.
metadata_loadedQuando este evento ocorrer, leia os estados relacionados do mesmo elemento.
read_resolvedQuando este evento ocorrer, leia os estados relacionados do mesmo elemento.
download_completedQuando este evento ocorrer, leia os estados relacionados do mesmo elemento.
share_changedQuando este evento ocorrer, leia os estados relacionados do mesmo elemento.
delete_completedQuando este evento ocorrer, leia os estados relacionados do mesmo elemento.
delete_pendingQuando este evento ocorrer, leia os estados relacionados do mesmo elemento.
browse_loadedQuando este evento ocorrer, leia os estados relacionados do mesmo elemento.
transfer_cancelledQuando este evento ocorrer, leia os estados relacionados do mesmo elemento.
cleanup_pendingQuando este evento ocorrer, leia os estados relacionados do mesmo elemento.
transfer_errorQuando este evento ocorrer, leia os estados relacionados do mesmo elemento.
session_clearedQuando este evento ocorrer, leia os estados relacionados do mesmo elemento.
Perguntas que os desenvolvedores fazem
Posso salvar a URL de leitura temporária como meu arquivo?
Não. Persista asset_ref e os metadados canônicos. Reautorize leituras; um caminho de download do dispositivo não é um arquivo Bubble.
Como funciona a assinatura?
Preço planejado: instalar o plugin em Bubble é gratuito. O acesso a BestPlugins é uma assinatura separada para cada plugin em cada projeto de aplicativo Bubble: 7 dias gratuitos, depois US$1.50 por mês. Development e Live estão incluídos. Não há limite fixo no número de operações; limites de tamanho de arquivo e de recursos ainda se aplicam. O checkout ainda não está aberto. A tela de ativação mostrará a primeira data de cobrança e os termos de cancelamento.
Guias relacionados
Lançamento de Marketplace pendente
Guia do fórum não publicado
Para obter ajuda, informe qual plugin e dispositivo você usa, a ação que tentou e o que aconteceu. Use um exemplo sem dados pessoais. Nunca compartilhe sua chave ou arquivos privados.