Google Home Account Linking with Azure AD B2C

585 views Asked by At

I'm trying to create an app for Google Home using Actions on Google.

The flow is set to authorization code, but just in case, I've enabled implicit flow on the tenant. The endpoints are the ones found in the well-known openid endpoint and I've added the right app id and secret.

If I run the 'gala-demo' google tool that debugs Account linking it gets a token so I think that the OAuth server works.

When I run the test app from the Google Home app at the end of the account linking process it shows an error saying Couldn't update the settings, check the connection

I'm from Italy, but I've the assistant available due to the language set to English (US)

Can anyone help me?

This is the actions-package used :

{
"actions": [
  {
  "name": "MAIN",
  "fulfillment": {
    "conversationName": "default"
  },
  "intent": {
    "name": "actions.intent.MAIN"
  }
},
  {
    "name" :"actions.devices",
    "deviceControl":{
    },
    "fulfillment": {
        "conversationName" :"automation"
    }
  }
],
"conversations": {
  "automation" :
    {
        "name":"automation",
        "url" :"https://xxx/voicetest"
    },
    "default" :
    {
        "name":"default",
        "url" :"https://xxx"
    }
  }

}

Edit: This is a log from the android phone:

09-11 17:44:20.329   713  1982 I ActivityManager: START u0 {act=android.intent.action.VIEW dat=customtab://4640903d-c02f-438b-9349-850fa2b5132b?https://assistant.google.com/services/auth/handoffs/auth/start?provider=test1-bd_dev&scopes=https://bpb2ctest.onmicrosoft.com/smarthome/write%20openid&return_url=assistant-handoff://complete&[email protected]&redirect_uri=assistant-handoff%3A%2F%2Fcomplete flg=0x5b088000 cmp=com.android.chrome/org.chromium.chrome.browser.customtabs.SeparateTaskCustomTabActivity (has extras)} from uid 10118 on display 0
09-11 17:44:20.413  1316  4161 W cr_tabmodel: Starting to fetch tab list.
09-11 17:44:20.414  1316  4161 E cr_tabmodel: State file does not exist.
09-11 17:44:20.446   713   723 I art     : Background partial concurrent mark sweep GC freed 23840(1732KB) AllocSpace objects, 4(208KB) LOS objects, 33% free, 25MB/38MB, paused 2.574ms total 176.425ms
09-11 17:44:20.501   713   765 I ActivityManager: Displayed com.android.chrome/org.chromium.chrome.browser.customtabs.SeparateTaskCustomTabActivity: +141ms (total +259ms)
09-11 17:44:20.528  1392  1419 W Adreno-ES20: <rb_perfcounter_gpu_disjoint_status:487>: open failed: errno 13
09-11 17:44:20.528  1392  1419 W Adreno-ES20: <rb_perfcounter_gpu_disjoint_status:487>: open failed: errno 13
09-11 17:44:20.525  1419  1419 W CrGpuMain: type=1400 audit(0.0:1449): avc: denied { read } for name="reset_count" dev="sysfs" ino=19599 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:sysfs:s0 tclass=file permissive=0
09-11 17:44:20.525  1419  1419 W CrGpuMain: type=1300 audit(0.0:1449): arch=40000028 syscall=322 per=800008 success=no exit=-13 a0=ffffff9c a1=a6ffbe7c a2=20000 a3=0 items=1 ppid=345 ppcomm=main auid=4294967295 uid=10118 gid=10118 euid=10118 suid=10118 fsuid=10118 egid=10118 sgid=10118 fsgid=10118 tty=(none) ses=4294967295 exe="/system/bin/app_process32_xposed" subj=u:r:untrusted_app:s0:c512,c768 key=(null)
09-11 17:44:20.525   292   292 W auditd  : type=1307 audit(0.0:1449): cwd="/"
09-11 17:44:20.525   292   292 W auditd  : type=1302 audit(0.0:1449): item=0 name="/sys/class/kgsl/kgsl-3d0/reset_count" inode=19599 dev=00:0d mode=0100444 ouid=0 ogid=0 rdev=00:00 obj=u:object_r:sysfs:s0
09-11 17:44:20.525   292   292 W auditd  : type=1327 audit(0.0:1449): proctitle="com.android.chrome:privileged_process0"
09-11 17:44:20.525   292   292 W auditd  : type=1320 audit(0.0:1449):
09-11 17:44:20.525  1419  1419 W CrGpuMain: type=1400 audit(0.0:1450): avc: denied { read } for name="reset_count" dev="sysfs" ino=19599 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:sysfs:s0 tclass=file permissive=0
09-11 17:44:20.525  1419  1419 W CrGpuMain: type=1300 audit(0.0:1450): arch=40000028 syscall=322 per=800008 success=no exit=-13 a0=ffffff9c a1=a6ffbe7c a2=20000 a3=0 items=1 ppid=345 ppcomm=main auid=4294967295 uid=10118 gid=10118 euid=10118 suid=10118 fsuid=10118 egid=10118 sgid=10118 fsgid=10118 tty=(none) ses=4294967295 exe="/system/bin/app_process32_xposed" subj=u:r:untrusted_app:s0:c512,c768 key=(null)
09-11 17:44:20.525   292   292 W auditd  : type=1307 audit(0.0:1450): cwd="/"
09-11 17:44:20.525   292   292 W auditd  : type=1302 audit(0.0:1450): item=0 name="/sys/class/kgsl/kgsl-3d0/reset_count" inode=19599 dev=00:0d mode=0100444 ouid=0 ogid=0 rdev=00:00 obj=u:object_r:sysfs:s0
09-11 17:44:20.525   292   292 W auditd  : type=1327 audit(0.0:1450): proctitle="com.android.chrome:privileged_process0"
09-11 17:44:20.525   292   292 W auditd  : type=1320 audit(0.0:1450):
09-11 17:44:20.532  1392  1419 W Adreno-ES20: <rb_perfcounter_gpu_disjoint_status:487>: open failed: errno 13
09-11 17:44:20.528  1419  1419 W CrGpuMain: type=1400 audit(0.0:1451): avc: denied { read } for name="reset_count" dev="sysfs" ino=19599 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:sysfs:s0 tclass=file permissive=0
09-11 17:44:20.528  1419  1419 W CrGpuMain: type=1300 audit(0.0:1451): arch=40000028 syscall=322 per=800008 success=no exit=-13 a0=ffffff9c a1=a6ffbe7c a2=20000 a3=0 items=1 ppid=345 ppcomm=main auid=4294967295 uid=10118 gid=10118 euid=10118 suid=10118 fsuid=10118 egid=10118 sgid=10118 fsgid=10118 tty=(none) ses=4294967295 exe="/system/bin/app_process32_xposed" subj=u:r:untrusted_app:s0:c512,c768 key=(null)
09-11 17:44:20.528   292   292 W auditd  : type=1307 audit(0.0:1451): cwd="/"
09-11 17:44:20.528   292   292 W auditd  : type=1302 audit(0.0:1451): item=0 name="/sys/class/kgsl/kgsl-3d0/reset_count" inode=19599 dev=00:0d mode=0100444 ouid=0 ogid=0 rdev=00:00 obj=u:object_r:sysfs:s0
09-11 17:44:20.528   292   292 W auditd  : type=1327 audit(0.0:1451): proctitle="com.android.chrome:privileged_process0"
09-11 17:44:20.528   292   292 W auditd  : type=1320 audit(0.0:1451):
09-11 17:44:21.164   327   327 W SurfaceFlinger: couldn't log to binary event log: overflow.
09-11 17:44:21.180   713   922 W ActivityManager: Finishing task with all activities already finished
09-11 17:44:21.180   713   922 W ActivityManager: Duplicate finish request for ActivityRecord{6fbf838 u0 android/com.android.internal.app.ResolverActivity t1512 f}
09-11 17:44:23.459   713 21104 I ActivityManager: START u0 {act=android.intent.action.VIEW cat=[android.intent.category.BROWSABLE] dat=assistant-handoff://complete/?result_code=SUCCESS&result_message=Accounts+now+linked. flg=0x10000000 cmp=com.google.android.googlequicksearchbox/com.google.android.apps.gsa.assistant.handoff.BrowserReturnActivity (has extras)} from uid 10118 on display 0
09-11 17:44:23.469   713 21104 I ActivityManager: moveTaskToBack: TaskRecord{5a1503c #1514 I=com.android.chrome/org.chromium.chrome.browser.customtabs.SeparateTaskCustomTabActivity U=0 StackId=1 sz=1}
09-11 17:44:23.493   713  1422 I ActivityManager: Process com.android.chrome:sandboxed_process0 (pid 4231) has died
09-11 17:44:23.493   713  1422 D ActivityManager: cleanUpApplicationRecord -- 4231
09-11 17:44:23.493   713  1422 W ActivityManager: Scheduling restart of crashed service com.android.chrome/org.chromium.content.app.SandboxedProcessService0 in 1000ms
09-11 17:44:23.509   713   730 I MediaFocusControl:  AudioFocus  abandonAudioFocus() from uid/pid 10118/1316 clientId=android.media.AudioManager@35966bforg.chromium.content.browser.AudioFocusDelegate@4e1868c
09-11 17:44:23.569  1316  1350 W cr_ChildProcessConn: onServiceDisconnected (crash or killed by oom): pid=4231
09-11 17:44:23.599   713  1971 I ActivityManager: START u0 {dat=assistant-handoff://complete/?result_code=SUCCESS&result_message=Accounts+now+linked. cmp=com.google.android.googlequicksearchbox/com.google.android.apps.gsa.assistant.handoff.BrowserControlActivity} from uid 10044 on display 0
09-11 17:44:23.612  1316  4328 W InvalidationClientCore: [TiclService] Ticl being stopped: Client: <ApplicationClientIdP: client_type=1018 client_name=9b72d349-1e3b-465b-9f0e-c949b1a6c961>, \n\006\n\004\010\003\020\001\022\022\t\r\025\007W\223\211\275\213\021\333F0\002L\251\"&\032\007\010\2022\020\003\030\001, <RunState: 2>
09-11 17:44:23.703   713   723 I art     : Background partial concurrent mark sweep GC freed 16404(916KB) AllocSpace objects, 10(664KB) LOS objects, 33% free, 25MB/38MB, paused 1.663ms total 141.766ms
09-11 17:44:23.713  2078  2078 W BrowserControlActivity: Transition animation scale is not available
09-11 17:44:23.741  1392  1419 E Surface : getSlotFromBufferLocked: unknown buffer: 0x94d5f9a0
09-11 17:44:23.748  2078  2078 I art     : Starting a blocking GC Explicit
09-11 17:44:23.769  1316  1350 I cr_BindingManager: onTrimMemory: level=20, size=0
09-11 17:44:23.796  1316  1316 W cr_ContextualSearch: Warning, the UNDEFINED state was aborted.
09-11 17:44:23.815  2078  2078 I art     : Explicit concurrent mark sweep GC freed 6403(374KB) AllocSpace objects, 1(36KB) LOS objects, 36% free, 27MB/43MB, paused 703us total 65.328ms
09-11 17:44:23.832  2078  2078 I art     : Starting a blocking GC Explicit
09-11 17:44:23.888  2078  2078 I art     : Explicit concurrent mark sweep GC freed 2723(194KB) AllocSpace objects, 0(0B) LOS objects, 36% free, 27MB/43MB, paused 719us total 55.852ms
09-11 17:44:24.047  1316  1350 W cr_ChildProcLauncher: Create a new ChildConnectionAllocator with package name = com.android.chrome, inSandbox = true
09-11 17:44:24.100   713  1982 I ActivityManager: Start proc 4334:com.android.chrome:sandboxed_process0/u0i9 for service com.android.chrome/org.chromium.content.app.SandboxedProcessService0
09-11 17:44:24.437   327   327 W SurfaceFlinger: couldn't log to binary event log: overflow.
09-11 17:44:24.437   327   327 W SurfaceFlinger: couldn't log to binary event log: overflow.
09-11 17:44:24.495  4334  4334 W dboxed_process0: type=1400 audit(0.0:1452): avc: denied { getattr } for path="/data/data/com.android.chrome" dev="mmcblk0p26" ino=262070 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0
09-11 17:44:24.495  4334  4334 W dboxed_process0: type=1300 audit(0.0:1452): arch=40000028 syscall=327 per=800008 success=no exit=-13 a0=ffffff9c a1=be96a894 a2=be967700 a3=100 items=1 ppid=345 ppcomm=main auid=4294967295 uid=99009 gid=99009 euid=99009 suid=99009 fsuid=99009 egid=99009 sgid=99009 fsgid=99009 tty=(none) ses=4294967295 exe="/system/bin/app_process32_xposed" subj=u:r:isolated_app:s0:c512,c768 key=(null)
09-11 17:44:24.495   292   292 W auditd  : type=1307 audit(0.0:1452): cwd="/"
09-11 17:44:24.495   292   292 W auditd  : type=1302 audit(0.0:1452): item=0 name="/data/data/com.android.chrome" inode=262070 dev=b3:1a mode=040700 ouid=10118 ogid=10118 rdev=00:00 obj=u:object_r:app_data_file:s0:c512,c768
09-11 17:44:24.495   292   292 W auditd  : type=1327 audit(0.0:1452): proctitle="com.android.chrome:sandboxed_process0"
09-11 17:44:24.495   292   292 W auditd  : type=1320 audit(0.0:1452):
09-11 17:44:24.511  4334  4334 W dboxed_process0: type=1400 audit(0.0:1453): avc: denied { search } for name="tmp" dev="mmcblk0p26" ino=523267 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:shell_data_file:s0 tclass=dir permissive=0
09-11 17:44:24.511  4334  4334 W dboxed_process0: type=1300 audit(0.0:1453): arch=40000028 syscall=334 per=800008 success=no exit=-13 a0=ffffff9c a1=b40a9ed0 a2=0 a3=0 items=1 ppid=345 ppcomm=main auid=4294967295 uid=99009 gid=99009 euid=99009 suid=99009 fsuid=99009 egid=99009 sgid=99009 fsgid=99009 tty=(none) ses=4294967295 exe="/system/bin/app_process32_xposed" subj=u:r:isolated_app:s0:c512,c768 key=(null)
09-11 17:44:24.511   292   292 W auditd  : type=1307 audit(0.0:1453): cwd="/"
09-11 17:44:24.511   292   292 W auditd  : type=1302 audit(0.0:1453): item=0 name="/data/local/tmp/chrome-command-line"
09-11 17:44:24.511   292   292 W auditd  : type=1327 audit(0.0:1453): proctitle="com.android.chrome:sandboxed_process0"
09-11 17:44:24.511   292   292 W auditd  : type=1320 audit(0.0:1453):
09-11 17:44:24.526  4334  4334 I cr_ChildProcessService: Creating new ChildProcessService pid=4334
09-11 17:44:24.558  4334  4354 I cr_LibraryLoader: Time to load native libraries: 23 ms (timestamps 2975-2998)
09-11 17:44:24.560  4334  4354 I cr_LibraryLoader: Using linker: org.chromium.base.library_loader.ModernLinker
09-11 17:44:24.561  4334  4354 I chromium: [INFO:library_loader_hooks.cc(144)] Chromium logging enabled: level = 0, default verbosity = 0
09-11 17:44:24.561  4334  4354 I cr_LibraryLoader: Expected native library version number "60.0.3112.116", actual native library version number "60.0.3112.116"
09-11 17:44:24.611  1392  1419 W Adreno-ES20: <get_gpu_clk:229>: open failed: errno 13
09-11 17:44:24.608  1419  1419 W CrGpuMain: type=1400 audit(0.0:1454): avc: denied { read } for name="gpuclk" dev="sysfs" ino=19588 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:sysfs:s0 tclass=file permissive=0
09-11 17:44:24.608  1419  1419 W CrGpuMain: type=1300 audit(0.0:1454): arch=40000028 syscall=322 per=800008 success=no exit=-13 a0=ffffff9c a1=a6ffbdfd a2=20000 a3=0 items=1 ppid=345 ppcomm=main auid=4294967295 uid=10118 gid=10118 euid=10118 suid=10118 fsuid=10118 egid=10118 sgid=10118 fsgid=10118 tty=(none) ses=4294967295 exe="/system/bin/app_process32_xposed" subj=u:r:untrusted_app:s0:c512,c768 key=(null)
09-11 17:44:24.608   292   292 W auditd  : type=1307 audit(0.0:1454): cwd="/"
09-11 17:44:24.608   292   292 W auditd  : type=1302 audit(0.0:1454): item=0 name="/sys/class/kgsl/kgsl-3d0/gpuclk" inode=19588 dev=00:0d mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=u:object_r:sysfs:s0
09-11 17:44:24.608   292   292 W auditd  : type=1327 audit(0.0:1454): proctitle="com.android.chrome:privileged_process0"
09-11 17:44:24.608   292   292 W auditd  : type=1320 audit(0.0:1454):
09-11 17:44:24.618  1419  1419 W CrGpuMain: type=1400 audit(0.0:1455): avc: denied { read } for name="reset_count" dev="sysfs" ino=19599 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:sysfs:s0 tclass=file permissive=0
09-11 17:44:24.618  1419  1419 W CrGpuMain: type=1300 audit(0.0:1455): arch=40000028 syscall=322 per=800008 success=no exit=-13 a0=ffffff9c a1=a6ffbe7c a2=20000 a3=0 items=1 ppid=345 ppcomm=main auid=4294967295 uid=10118 gid=10118 euid=10118 suid=10118 fsuid=10118 egid=10118 sgid=10118 fsgid=10118 tty=(none) ses=4294967295 exe="/system/bin/app_process32_xposed" subj=u:r:untrusted_app:s0:c512,c768 key=(null)
09-11 17:44:24.618   292   292 W auditd  : type=1307 audit(0.0:1455): cwd="/"
09-11 17:44:24.618   292   292 W auditd  : type=1302 audit(0.0:1455): item=0 name="/sys/class/kgsl/kgsl-3d0/reset_count" inode=19599 dev=00:0d mode=0100444 ouid=0 ogid=0 rdev=00:00 obj=u:object_r:sysfs:s0
09-11 17:44:24.620  1392  1419 W Adreno-ES20: <rb_perfcounter_gpu_disjoint_status:487>: open failed: errno 13
09-11 17:44:24.620  1392  1419 W Adreno-ES20: <rb_perfcounter_gpu_disjoint_status:487>: open failed: errno 13
09-11 17:44:24.625  1392  1419 W Adreno-ES20: <rb_perfcounter_gpu_disjoint_status:487>: open failed: errno 13
09-11 17:44:24.633  1392  1419 W Adreno-ES20: <rb_perfcounter_gpu_disjoint_status:487>: open failed: errno 13
09-11 17:44:24.633  1392  1419 W Adreno-ES20: <rb_perfcounter_gpu_disjoint_status:487>: open failed: errno 13
09-11 17:44:24.634  1392  1419 W Adreno-ES20: <rb_perfcounter_gpu_disjoint_status:487>: open failed: errno 13
09-11 17:44:24.747  2078  2078 W CvcChallengeAdapter: Handoff activity for CVC challenge for transactions is disabled with a flag
09-11 17:44:24.747  2078  2078 W FixInstrumentAdapter: Handoff activity for fix instrument for transactions is disabled with a flag
09-11 17:44:24.747  2078  2078 W PaymentsAuthAdapter: Handoff activity for payments auth is disabled with a flag
09-11 17:44:24.747  2078  2078 W AddInstrumentAdapter: Handoff activity for add instrument for transactions is disabled with a flag
09-11 17:44:24.776  2078  2370 W Settings: Setting mobile_data has moved from android.provider.Settings.Secure to android.provider.Settings.Global.
09-11 17:44:24.778  2078  2366 W CronetHttpEngine: Upload request without a content type.
09-11 17:44:25.835  2078  1177 W S3NetworkUtils: [Upload] response code: 500
09-11 17:44:25.839  2078  2078 W ASPrefControlBase: #onFailure
09-11 17:44:25.839  2078  2078 W ASPrefControlBase: com.google.android.apps.gsa.shared.speech.b.o: errorCode: -83903, engine: 2
09-11 17:44:25.839  2078  2078 W ASPrefControlBase:     at com.google.android.apps.gsa.s3.t.b(SourceFile:7)
09-11 17:44:25.839  2078  2078 W ASPrefControlBase:     at com.google.android.apps.gsa.s3.o.a(SourceFile:9)
09-11 17:44:25.839  2078  2078 W ASPrefControlBase:     at com.google.android.apps.gsa.s3.m.QX(SourceFile:61)
09-11 17:44:25.839  2078  2078 W ASPrefControlBase:     at com.google.android.apps.gsa.s3.l.run(SourceFile:19)
09-11 17:44:25.839  2078  2078 W ASPrefControlBase:     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:428)
09-11 17:44:25.839  2078  2078 W ASPrefControlBase:     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
09-11 17:44:25.839  2078  2078 W ASPrefControlBase:     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:428)
09-11 17:44:25.839  2078  2078 W ASPrefControlBase:     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
09-11 17:44:25.839  2078  2078 W ASPrefControlBase:     at com.google.android.apps.gsa.shared.util.concurrent.a.af.run(Unknown Source)
09-11 17:44:25.839  2078  2078 W ASPrefControlBase:     at com.google.android.apps.gsa.shared.util.concurrent.a.bn.run(SourceFile:4)
09-11 17:44:25.839  2078  2078 W ASPrefControlBase:     at com.google.android.apps.gsa.shared.util.concurrent.a.bn.run(SourceFile:4)
09-11 17:44:25.839  2078  2078 W ASPrefControlBase:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
09-11 17:44:25.839  2078  2078 W ASPrefControlBase:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
09-11 17:44:25.839  2078  2078 W ASPrefControlBase:     at java.lang.Thread.run(Thread.java:761)
09-11 17:44:25.839  2078  2078 W ASPrefControlBase:     at com.google.android.apps.gsa.shared.util.concurrent.a.aj.run(SourceFile:6)
09-11 17:44:25.855   713  8545 W InputMethodManagerService: Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@6985970 attribute=null, token = android.os.BinderProxy@63bc384
09-11 17:44:26.056   327   327 W SurfaceFlinger: couldn't log to binary event log: overflow.
09-11 17:44:26.132  1316  4373 W InvalidationClientCore: [TiclService] Ticl being stopped: Client: <ApplicationClientIdP: client_type=1018 client_name=9b72d349-1e3b-465b-9f0e-c949b1a6c961>, \n\006\n\004\010\003\020\001\022\022\t\r\025\007W\223\211\275\213\021\333F0\002L\251\"&\032\007\010\2022\020\003\030\001, <RunState: 2>
1

There are 1 answers

0
Gabrio On

I've solved using the example response from google, only setting the right requestId.

EDIT 1: The error was evidently in the JSON response that the back-end was providing. I wasn't able to test this with my own endpoint because google doesn't allow self signed certificates even for testing

EDIT 2: The error was in the JSON response, everything is camel-case except nicknames, that i was writing as nickNames (wrong) ..