java - 在 Android 应用程序中集成 Google Photos Library API

标签 java android rx-java google-photos-api

我想在 android 中集成 google photos api,我已经完成了 google 登录过程,但我无法获得访问 token ,因为我在传递参数时在 FixedCredentialsProvider.create 方法中遇到错误。

PhotosLibrarySettings settings =
     PhotosLibrarySettings.newBuilder()
    .setCredentialsProvider(
        FixedCredentialsProvider.create(/ Add credentials here. /)) 
    .build();

try (PhotosLibraryClient photosLibraryClient =
    PhotosLibraryClient.initialize(settings)) {

    // Create a new Album  with at title
    Album createdAlbum = photosLibraryClient.createAlbum("My Album");

    // Get some properties from the album, such as its ID and product URL
    String id = album.getId();
    String url = album.getProductUrl();

} catch (ApiException e) {
    // Error during album creation
}

最佳答案

我能够找到问题的解决方案

UserCredentials.newBuilder()
            .setClientId("your client id")
            .setClientSecret("your client secret")
            .setAccessToken("Access Token")
            .build()

您可以将此 UserCredentials 对象传递给 `FixedCredentialsProvider.create())

获取访问 token 使用

val client = OkHttpClient()
            val requestBody = FormEncodingBuilder()
                    .add("grant_type", "authorization_code")
                    .add("client_id", "")
                    .add("client_secret", "")
                    .add("redirect_uri", "")
                    .add("code", "yourweb server id)
                    .build()
            val request = Request.Builder()
                    .url("https://www.googleapis.com/oauth2/v4/token")
                    .post(requestBody)
                    .build()
            client.newCall(request).enqueue(object : Callback {
                override fun onFailure(request: Request, e: IOException) {

                }

                @Throws(IOException::class)
                override fun onResponse(response: Response) {
                    try {
                        val jsonObject = JSONObject(response.body().string())

                        mTokenExpired = SystemClock.elapsedRealtime() + jsonObject.optLong("expires_in") * 1000

                        accessTokenObservable.postValue(Resource.success("",jsonObject.optString("access_token")))


                    } catch (e: JSONException) {
                        e.printStackTrace()
                    }

                }
            })

https://github.com/erickogi/AndroidGooglePhotosApi

希望对你有帮助

关于java - 在 Android 应用程序中集成 Google Photos Library API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54250363/

相关文章:

java - 如何使用jni将java中的Arraylist转换为c中的lpwstr

java - CATCH 异常是否会报告给 Firebase/Fabric 等?

mongodb - 使用JavaRx/rx-mongodb在Grails中下载文件

kotlin - Observable withLatestFrom 值

Java将文件读入内存以及如何不炸毁内存

java - 使用java从属性文件中删除键和值

java - 在 string.xml 中调用变量

android - 如何使用 NativeActivity 写入内部存储文件系统?

java - GSON fromJSON 反序列化,有条件排除特定对象实例

java - RxJava 2.0 中的 Observable 和 Flowable 有什么区别?