2016-06-15 16 views
-1

Gmail APIを使用してGmailからメッセージを取得しています。具体的には、このURLを使用してハングアウトの会話とメール:https://www.googleapis.com/gmail/v1/users/me/messages?q=in:chatsgmail apiからインライン画像を取得しますか?

は、私がメッセージに入力したときにあなたが見ることができるように、私はこのような構造

{ 
    "id": "1555561f7b8e1sdf56b", 
    "threadId": "155552511dfsd83ce98", 
    "labelIds": [ 
    "CHAT" 
    ], 
    "snippet": "df", 
    "historyId": "270812", 
    "internalDate": "1466016331704", 
    "payload": { 
    "partId": "", 
    "mimeType": "text/html", 
    "filename": "", 
    "headers": [ 
     { 
     "name": "From", 
     "value": "\"Oscar J. Irún\" <[email protected]>" 
     } 
    ], 
    "body": { 
     "size": 2, 
     "data": "ZGY=" 
    } 
    }, 
    "sizeEstimate": 100 
} 

を参照して、身体のメッセージは、「DF」です。これまでのところ大丈夫です。

ハングアウトメッセージが画像の場合は問題が発生します。 snippetフィールドは空白で、メッセージ内の添付ファイルは表示されません。これは例です:

{ 
    "id": "155558233274d78c91", 
    "threadId": "15fd5552511d83ce98", 
    "labelIds": [ 
    "CHAT" 
    ], 
    "snippet": "", 
    "historyId": "27sd0827", 
    "internalDate": "1466018445133", 
    "payload": { 
    "mimeType": "text/html", 
    "filename": "", 
    "headers": [ 
     { 
     "name": "From", 
     "value": "\"Oscar J. Irún\" <[email protected]>" 
     } 
    ], 
    "body": { 
     "size": 0, 
     "data": "" 
    } 
    }, 
    "sizeEstimate": 100 
} 

このインラインイメージを取得する必要があります。どんな助けもありがとう!

+0

あなたの質問は何ですか?あなたはイメージのURLを取得する方法を尋ねていますか? –

+0

申し訳ありません、はい@WoodrowBarlowです。編集した質問 –

+0

Gmail APIを使用したチャットメッセージの取得はサポートされていません(http://stackoverflow.com/questions/25316138/find-timestamp-for-hangout-and-chat-messages-retrieved-with-gmail-api)。 )、添付ファイルを取得することはおそらく不可能です。 – Tholle

答えて

1

Users.messages.attachments:getを使用して添付ファイルを取得できます。この要求には承認が必要です。 Gmail APIへのすべてのリクエストは、認証されたユーザーによって承認されている必要があります。 Gmailでは、Googleアカウントの認証とユーザーデータへのアクセスの承認にOAuth 2.0プロトコルが使用されています。 PHP用JUST FYI

HTTPリクエスト

GET https://www.googleapis.com/gmail/v1/users/userId/messages/messageId/attachments/id 

public static void getAttachments(Gmail service, String userId, String messageId) 
throws IOException { 
Message message = service.users().messages().get(userId, messageId).execute(); 
List<MessagePart> parts = message.getPayload().getParts(); 
for (MessagePart part : parts) { 
if (part.getFilename() != null && part.getFilename().length() > 0) { 
String filename = part.getFilename(); 
String attId = part.getBody().getAttachmentId(); 
MessagePartBody attachPart = service.users().messages().attachment(). 
get(userId, messageId, attId).execute(); 
byte[] fileByteArray = Base64.decodeBase64(attachPart.getData()); 
FileOutputStream fileOutFile = 
new FileOutputStream("directory_to_store_attachments" + filename); 
fileOutFile.write(fileByteArray); 
file OutFile.close(); 
} 
} 
} 
+0

ありがとうございますが、問題はハングアウトメッセージです。それは添付ファイルや何もない、空のように見えます。これはGmail APIを使用して取得された通常のメールでは機能しますが、ハングアウトメッセージでは表示されません。 –

0

ソリューションは、これに似たものである: BASE64_DECODE(strtr($ gmail-> service-> users_messages_attachments->取得( '私'、$メッセージ - > id、$ arrPart ['body'] ['attachmentId']) - >データ、 '-_'、 '+ /'));

関連する問題