Amazon Cognito提供了多种选项来跟踪应用程序中的登录。其中一种方法是使用AWS IoT Core的设备影子功能。可以为每个应用程序用户创建一个唯一的设备影子,并在用户登录时更新其状态。随后,可以通过查询设备影子状态来了解有关用户登录的详细信息。
以下是一个使用设备影子来跟踪应用程序登录的代码示例:
import AWSIoTPythonSDK.MQTTLib as AWSIoTPyMQTT
...
myAWSIoTMQTTClient = AWSIoTPyMQTT.AWSIoTMQTTClient(clientId) myAWSIoTMQTTClient.configureEndpoint(endpoint, port) myAWSIoTMQTTClient.configureCredentials(rootCAPath, privateKeyPath, certificatePath) myAWSIoTMQTTClient.connect()
def customCallback(client, userdata, message):
myAWSIoTMQTTClient.subscribe("$aws/things/myDevice/shadow/update", 1, customCallback)
from boto3 import client import json
...
cognito_idp = client('cognito-idp')
response = cognito_idp.admin_initiate_auth( UserPoolId=USER_POOL_ID, AuthFlow='ADMIN_NO_SRP_AUTH', AuthParameters={ 'USERNAME': USERNAME, 'PASSWORD': PASSWORD }, ClientId=APP_CLIENT_ID )
access_token = response['AuthenticationResult']['AccessToken']
shadow_state = { "reported": { "user_id": USER_ID, "access_token": access_token } }
myAWSIoTMQTTClient.publish("$aws/things/myDevice/shadow/update", json.dumps(shadow_state), 1)
以上代码行将在设备影子的“reported”部分中存储用户ID和访问令牌。
shadow_get = { "state": {