侧边栏壁纸
博主头像
X博主等级

一个移动端码农

  • 累计撰写 30 篇文章
  • 累计创建 40 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

接入Google fit指南

X
X
2022-09-23 / 0 评论 / 0 点赞 / 489 阅读 / 1,121 字

由于我司APP面向全球用户,在海外,google fit和fitbit有很大的用户群,所以需要同步数据到这两大平台.

fitbit 按照官方文档接入,应用审核简单方便,同步数据也简单.这里就不再讲述.本文主要记录google fit接入审核的问题

第一步:

先去:google 云创建项目:传送门
image-1663934976233

选择API与服务
image-1663934987269

注:如果使用了firebase,需要先google云创建好项目后再去firebase创建项目,然后再google云这边的凭证会自动创建这几个

image-1663935044793

第二步:

选择库,启用你需要的服务,我这边是同步体重数据到google fit,所以在库中启用Fitness API

第三步:

创建 OAuth 客户端ID,建议只创建一个正式版的SHA-1,不然在提交正式版审核的时候google会要求你删除一个的,也可以在提交正式版之前手动删除

image-1663935131969

第四步:(也可以在后面添加):

添加网域验证,一般只需要添加一个域名,需要先去注册域名Search Console

image-1663935188900

第五步:(重要)

添加:OAuth 同意屏幕需要准备如下材料

一,基本信息

1,APP名称

2,APP图标(120x120像素)

3,官网隐私协议和服务政策(英文版)

4,官网应用介绍界面(建议英文版)

5,以上使用的域名都是之前添加过的网域验证的域名

已授权的网域:homefashion.firebaseapp.com是firebase使用的

image-1663935257196
基本是按照网页提示填入各种信息,然后进行继续进入下一步

二,范围

这个范围是看你APP使用google需要什么权限的,我这边测试是需要同步体重数据到google fit,需要登录权限和同步体重数据的权限

1,在非敏感范围添加:…/auth/userinfo.profile;…/auth/userinfo.email;openid等范围(非敏感范围不严格,几乎可以随便添加)

2,敏感范围:…/auth/fitness.body.write和…/auth/fitness.body.read,这2个权限都是属于Fitness API,如果没有找到,请先前往第二步库中开启;

注:敏感范围需要说明原因和拍视频,记得在英文状态下(测试版不需要,所以需要在测试版填好信息拍好视频才能转正式版)
拍的视频注意事项:
1,需要在英文状态想
2,需要有google登录授权过程,并且要显示出APP图标
3,点击授权的之前如果有图标显示,需要使用能体现出google fit品牌标志的图标
4,视频上传到youtube的话需要公开
5,需要在google fit查看到结果,用于验证APP真的可以同步数据到google
视频内容需要在APP中请求google登录同步数据以及在google fit中查看同步的数据

image-1663935351478

注:拍视频的时候需要登录,需要先在测试状态添加你的google账号才能登录.

都提交完成后请留意开发者联系信息邮件信息
image-1663935385733

后面等google同步完成后即可

下面介绍APP接入google fit 代码参考和填坑

1,添加依赖

    implementation 'com.google.android.gms:play-services-fitness:18.0.0'
    implementation 'com.google.android.gms:play-services-auth:18.1.0'

2,登录同步体重数据到google fit,如果需要同步其他数据,请参考官方文档

//登录
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestEmail()
                .requestId()
                .requestProfile()
//                .requestScopes(new Scope(Scopes.FITNESS_BODY_READ), new Scope(Scopes.FITNESS_BODY_READ_WRITE))//已被弃用
                .requestScopes(new Scope(Scopes.PLUS_ME))
                .build();
        GoogleSignInClient mGoogleSignInClient = GoogleSignIn.getClient(activity, gso);
        Intent signInIntent = mGoogleSignInClient.getSignInIntent();
        activity.startActivityForResult(signInIntent, GOOGLE_SIGN_IN);
 
//登录成功后请求需要的权限
fitnessOptions = FitnessOptions.builder()
                    .addDataType(DataType.AGGREGATE_WEIGHT_SUMMARY, FitnessOptions.ACCESS_WRITE)
                    .addDataType(DataType.TYPE_WEIGHT, FitnessOptions.ACCESS_WRITE).build();
 
//

避坑指南:
一,旧的google fit SDK登录请求的requestScopes是这样写的:
.requestScopes(new Scope(Scopes.FITNESS_BODY_READ), new Scope(Scopes.FITNESS_BODY_READ_WRITE))
更新SDK后找不到了,替换为.requestScopes(new Scope(Scopes.PLUS_ME))

二,没有请求权限.addDataType(DataType.TYPE_WEIGHT, FitnessOptions.ACCESS_WRITE)

或者在google云上面写需要的权限,导致同步数据失败

三,登录成功,请求权限回复5000错误:

这个一般是google云上面的凭据信息错误,获取是没有添加,比如先创建了firebase没有自动生成

image-1663935599069

还有就是OAuth 2.0 客户端 ID中创建的SHA-1与你打包的不一致

0

评论区