Azure / Azure/AzureAuth

Email Functionality Issue: Unstable API Causing Authentication Process to Hang Indefinitely

Aperta
#79 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
R
Stelle
48
Fork
23
Merge medio
4h 2m
PR unite (30g)
3

Descrizione

**Description**:

We have been attempting to reactivate the email functionality in our Shiny application using the Microsoft365R API. However, we have encountered a persistent issue that we would appreciate your assistance with.

When the button to send emails is pressed, the application loops over users and sends the email. However, before sending the email to each user, an authentication page opens for logging in and displays a message that the page can now be closed. Occasionally, the API gets stuck on the authentication page and does not return to the app, causing the loading spinner to remain stuck indefinitely.

We have been unable to find a workaround or solution for this issue, and we suspect that it may originate from the API side. We would greatly appreciate any guidance or suggestions that you could provide to help us resolve this problem.

Thank you in advance for your assistance.

**Code snippet:**

```
# Email-sending function
send.email = function(user_from, email_to, email_subject, record) {

show_modal_spinner(spin = "circle", text = "Sending email to " %+% email_to %+% "...")

# Open Outlook connection
outlook_conn = get_business_outlook()

# Create email body containing a properly formatted version of the record
record_rotated = sjmisc::rotate_df(record, rn = "Field") %>% tidyr::replace_na(list(V1 = ""))
email_body = record_rotated %>% dplyr::mutate(Field = "" %+% Field %+% ":") %>% purrr::pmap_chr(paste, collapse = "") %>% paste(collapse = "

")

# Send email
email = compose_email(body = md(email_body), footer = md(""))
email = outlook_conn$create_email(email, subject = email_subject, to = email_to)
email$send()
}

# Main application code calling the email-sending function
if (table_obj$abbr %in% c("req", "reqh")) {

# Extract email from current user and all data users
current_user = db[["usr"]][["current_user"]]
email_current_user = db[["usr"]]$content %>% dplyr::filter(User == current_user) %>% dplyr::pull(Email)
email_data_users = db[["usr"]]$content %>% dplyr::filter(Type == "Data user") %>% dplyr::pull(Email)

# Send email to current user and all data users with the current record
users_email_to = c(email_current_user, email_data_users) %>% unique()

if (grepl("add", id) == T & table_obj$abbr == "req") {
email_subject = "New request from " %+% current_user
}

if (grepl("add", id) == T & table_obj$abbr == "reqh") {
email_subject = "New request history record from " %+% current_user
}

if (grepl("edit", id) == T & table_obj$abbr == "req") {
email_subject = "Update to request " %+% record$ID
}

if (grepl("edit", id) == T & table_obj$abbr == "reqh") {
email_subject = "Update to request history record " %+% record$ID
}

send.multiple_emails(current_user, users_email_to, email_subject, record)

}
```

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia con get_business_outlook e il flusso di autenticazione Microsoft365R invocato da send.email prima di ogni messaggio. Riproduci il blocco intermittente mentre esamini send.multiple_emails e il ciclo e-mail circostante. Il lavoro è completato quando è stato identificato se il ritardo si trova nell’applicazione o nell’autenticazione dell’API e sono stati documentati un fix o un workaround verificati.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
azure, r
Ambito
authentication
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
25/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.