Невозможно перенаправить обратно в мобильное приложение Kotlin после входа в систему с использованием учетной записи GooAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Невозможно перенаправить обратно в мобильное приложение Kotlin после входа в систему с использованием учетной записи Goo

Сообщение 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)


Подробнее здесь: https://stackoverflow.com/questions/790 ... le-account
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»