Я создал мобильное приложение Kotlin для использования Gmail API. Но после входа в систему с учетной записью Google оно не будет автоматически перенаправляться обратно в приложение. Можете ли вы помочь мне с этим?
`Это мой исходный код.
private val SCOPES = setOf(
GmailScopes.GMAIL_LABELS, // メールのラベルを取得する権限
GmailScopes.GMAIL_READONLY, // メールを読み取る権限
GmailScopes.GMAIL_MODIFY, // メールのラベルの修正や送信なども行える権限
)
val APP_STORAGE_ACCESS_REQUEST_CODE: Int = 501 // Any value
@RequiresApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val policy = ThreadPolicy.Builder().permitAll().build()
StrictMode.setThreadPolicy(policy)
Log.d("DEBUG","T")
var authBtn = findViewById(R.id.sign_in_button) as Button
authBtn.setOnClickListener(){
runGmailAUth()
}
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
insets
}
}
fun getCredentials(
httpTransport: NetHttpTransport,
jsonFactory: GsonFactory,
credentialsFilePath: String = "credentials.json",
tokenDir: String = "tokens"
): Credential? {
// OAuth認証情報の読み込み
val inputStream = getAssets().open(credentialsFilePath)
// json形式の認証情報を読み込む
val clientSecrets: GoogleClientSecrets = GoogleClientSecrets
.load(jsonFactory, InputStreamReader(inputStream))
val appWorkingDirectory = getApplicationInfo().dataDir
val dataDirectory = File(appWorkingDirectory, tokenDir)
// 認証フローの設定をする。
val flow: GoogleAuthorizationCodeFlow = GoogleAuthorizationCodeFlow
.Builder(httpTransport, jsonFactory, clientSecrets, SCOPES)
.setDataStoreFactory(FileDataStoreFactory(dataDirectory)) // トークン保存先ディレクトリの指定
.setAccessType("offline") // web applicationの場合はonline, それ以外はoffline
.build()
Я подозреваю, что ошибка может быть связана с этой строкой кода. Браузер не откроет приложение после полного входа в систему.
val receiver = LocalServerReceiver.Builder().setPort(8888).build()
val ab: AuthorizationCodeInstalledApp =
object : AuthorizationCodeInstalledApp(flow, receiver) {
@Throws(IOException::class)
override fun onAuthorization(authorizationUrl: AuthorizationCodeRequestUrl) {
val url = authorizationUrl.build()
val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
startActivity(browserIntent)
}
}
return ab.authorize("user").setAccessToken("user")
}
fun runGmailAUth() {
val jsonFactory: GsonFactory = GsonFactory.getDefaultInstance()
Log.d("TAG", "runGmailAuth() Function")
// Googleが提供するHTTPクライアントを生成(これは、通常のNetHttpTransportにGoogle API用のルート証明書が埋め込まれていたりするようです。)
val httpTransport = GoogleNetHttpTransport.newTrustedTransport()
val credential = getCredentials(httpTransport, jsonFactory, "credentials.json")
// Gmail serviceを作成。Gmailの各種操作には以降このserviceを使用します。
val service: Gmail = Gmail.Builder(httpTransport, jsonFactory, credential)
.setApplicationName("kotlin-gmail-reader")
.build()
readMailAndRemoveUnread(service) // 下で実装します
}
fun readMailAndRemoveUnread(service: Gmail) {
// code to send mail.
}
data class MailMessage(val date: String, val from: String, val subject: String, val body: String)
Подробнее здесь: https://stackoverflow.com/questions/790 ... le-account
Невозможно перенаправить обратно в мобильное приложение Kotlin после входа в систему с использованием учетной записи Goo ⇐ Android
Форум для тех, кто программирует под Android
1728727597
Anonymous
Я создал мобильное приложение Kotlin для использования Gmail API. Но после входа в систему с учетной записью Google оно не будет автоматически перенаправляться обратно в приложение. Можете ли вы помочь мне с этим?
`Это мой исходный код.
private val SCOPES = setOf(
GmailScopes.GMAIL_LABELS, // メールのラベルを取得する権限
GmailScopes.GMAIL_READONLY, // メールを読み取る権限
GmailScopes.GMAIL_MODIFY, // メールのラベルの修正や送信なども行える権限
)
val APP_STORAGE_ACCESS_REQUEST_CODE: Int = 501 // Any value
@RequiresApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val policy = ThreadPolicy.Builder().permitAll().build()
StrictMode.setThreadPolicy(policy)
Log.d("DEBUG","T")
var authBtn = findViewById(R.id.sign_in_button) as Button
authBtn.setOnClickListener(){
runGmailAUth()
}
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
insets
}
}
fun getCredentials(
httpTransport: NetHttpTransport,
jsonFactory: GsonFactory,
credentialsFilePath: String = "credentials.json",
tokenDir: String = "tokens"
): Credential? {
// OAuth認証情報の読み込み
val inputStream = getAssets().open(credentialsFilePath)
// json形式の認証情報を読み込む
val clientSecrets: GoogleClientSecrets = GoogleClientSecrets
.load(jsonFactory, InputStreamReader(inputStream))
val appWorkingDirectory = getApplicationInfo().dataDir
val dataDirectory = File(appWorkingDirectory, tokenDir)
// 認証フローの設定をする。
val flow: GoogleAuthorizationCodeFlow = GoogleAuthorizationCodeFlow
.Builder(httpTransport, jsonFactory, clientSecrets, SCOPES)
.setDataStoreFactory(FileDataStoreFactory(dataDirectory)) // トークン保存先ディレクトリの指定
.setAccessType("offline") // web applicationの場合はonline, それ以外はoffline
.build()
Я подозреваю, что ошибка может быть связана с этой строкой кода. Браузер не откроет приложение после полного входа в систему.
val receiver = LocalServerReceiver.Builder().setPort(8888).build()
val ab: AuthorizationCodeInstalledApp =
object : AuthorizationCodeInstalledApp(flow, receiver) {
@Throws(IOException::class)
override fun onAuthorization(authorizationUrl: AuthorizationCodeRequestUrl) {
val url = authorizationUrl.build()
val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
startActivity(browserIntent)
}
}
return ab.authorize("user").setAccessToken("user")
}
fun runGmailAUth() {
val jsonFactory: GsonFactory = GsonFactory.getDefaultInstance()
Log.d("TAG", "runGmailAuth() Function")
// Googleが提供するHTTPクライアントを生成(これは、通常のNetHttpTransportにGoogle API用のルート証明書が埋め込まれていたりするようです。)
val httpTransport = GoogleNetHttpTransport.newTrustedTransport()
val credential = getCredentials(httpTransport, jsonFactory, "credentials.json")
// Gmail serviceを作成。Gmailの各種操作には以降このserviceを使用します。
val service: Gmail = Gmail.Builder(httpTransport, jsonFactory, credential)
.setApplicationName("kotlin-gmail-reader")
.build()
readMailAndRemoveUnread(service) // 下で実装します
}
fun readMailAndRemoveUnread(service: Gmail) {
// code to send mail.
}
data class MailMessage(val date: String, val from: String, val subject: String, val body: String)
Подробнее здесь: [url]https://stackoverflow.com/questions/79080763/unable-to-redirect-back-to-kotlin-mobile-app-after-login-using-google-account[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия