จะรับรายการแอพที่ดาวน์โหลด (จ่าย / ฟรี) โดยผู้ใช้จาก Google Play ได้อย่างไร?


121

ฉันเพิ่งเจอแอพนี้ซื้อแอพซึ่งสามารถดึงแอพที่ฉันจ่ายไปใน Google Play ได้หลังจากที่ฉันลงชื่อเข้าใช้ด้วยบัญชี Google ของฉัน

ฉันกำลังพยายามค้นหาว่ากำลังดำเนินการอย่างไรเนื่องจากฉันต้องการสร้างแอปที่คล้ายกัน แต่สำหรับแอปฟรีที่ดาวน์โหลดมา

อย่างไรก็ตามฉันไม่พบว่า OAuth API Scope ใดที่ใช้ในการดึงข้อมูลนั้นแม้ว่าจะดูรายการ APIทั้งหมดแล้วก็ตาม

ลงชื่อเข้าใช้ Google เพื่อขอการเข้าถึง androidmarket


แก้ไข: ฉันให้ความสำคัญกับคำถามนี้ตามที่แนะนำโดยคำถามที่คล้ายกันที่ฉันถามเกี่ยวกับที่นี่และเนื่องจากที่นี่และที่นั่นฉันไม่เห็นคำตอบที่แท้จริงเกี่ยวกับวิธีการทำและสิ่งที่สามารถทำได้ กับมัน

ฉันต้องการปรับแต่งคำถามเป็นหลาย ๆ ส่วน:

  1. API ที่สามารถใช้เพื่อรับข้อมูลของแอพที่ซื้อคืออะไร? ฉันจะอ่านเกี่ยวกับเรื่องนี้ได้ที่ไหน โปรดแสดงตัวอย่างการใช้งานที่สมบูรณ์เกี่ยวกับวิธีการทำ

  2. มันทำอะไรได้มากกว่านี้? อาจทำการค้นหา? อาจจะแสดงแอพฟรีที่ติดตั้ง? อาจถึงเวลาที่ติดตั้งและถอนการติดตั้ง? และหมวดหมู่ของแอพเหล่านั้น?

  3. มีข้อกำหนดพิเศษสำหรับการใช้ API นี้หรือไม่?


แก้ไข: ฉันให้ความสำคัญกับเรื่องนี้มากที่สุดเพราะไม่ว่าฉันจะอ่านและพยายามมากแค่ไหนฉันก็ยังไม่สามารถสร้าง POC ที่สามารถสืบค้นแอปจาก Play Store ที่ผู้ใช้เคยดาวน์โหลดมาได้ (ชื่อแพ็คเกจ ชื่อวันที่ติดตั้งและ / หรือลบไอคอน URL ราคา ... ) รวมทั้งแอปที่ต้องซื้อและฟรี

หากใครพบตัวอย่างที่ใช้งานได้ให้แสดงวิธีการทำและแสดงวิธีที่คุณพบเกี่ยวกับมัน (เอกสารหรือสิ่งใดก็ตามที่นำคุณไปสู่การแก้ปัญหา) ฉันไม่สามารถหาได้จากที่ใดและวิธีการแก้ปัญหาในปัจจุบันยังคลุมเครือเกินไปสำหรับฉันที่จะเริ่มต้นจาก



ฉันจะดูตัวเรียกใช้งานแอปตัวอย่าง มันรู้ว่าดาวน์โหลดแอพอะไรในโทรศัพท์
danny117

ผู้พัฒนา @android: ฉันได้วิเคราะห์Purchase Appsไฟล์ apk โดยการถอดรหัส ไม่เคยใช้ api ใด ๆ เพื่อรับรายการแอพที่ซื้อ วิธีการนี้เหมือนกับที่เราทราบซึ่งกำลังแยกวิเคราะห์เนื้อหา html ของหน้าเว็บ play store นี่คือส่วนหนึ่งของรหัสนี้: hastebin.com/uceyavurij.js
aminography

@aminography แล้วผู้ใช้จะได้รับมันอย่างไร? ท้ายที่สุดมันต้องได้รับข้อมูลของบัญชี Google ของผู้ใช้ ... มันไม่เพียงพอที่จะเข้าถึงแอพ Play Store ... มันจะทำอะไรกับสิทธิ์ที่มอบให้?
นักพัฒนา Android

@androiddeveloper: ข้อมูลทั้งหมดที่ให้มาPurchased Appsสามารถดึงมาจากเนื้อหาเว็บของ playstore ขออภัยฉันไม่สามารถเข้าถึงเพื่อซื้อแอปจาก Google Play หากคุณแชร์บัญชีที่มีแอปที่ซื้อให้ฉันฉันสามารถพัฒนาโค้ดตัวอย่างให้คุณได้
aminography

คำตอบ:


51

ปัญหาได้รับการแก้ไข ปิดการใช้ประโยชน์แล้ว

เราจะปิดข้อบกพร่องนี้เนื่องจากการเข้าสู่ระบบ Android เวอร์ชัน Preview หากปัญหายังคงมีความเกี่ยวข้องและทำซ้ำได้ในรุ่นประชาชนล่าสุด (Android Q) โปรดจับภาพรายงานข้อบกพร่องและข้อผิดพลาดเข้าสู่ระบบในhttps://source.android.com/setup/contribute/report-bugs หากไม่ได้รับคำตอบภายใน 14 วันถัดไปปัญหานี้จะถูกปิด ขอขอบคุณสำหรับความเข้าใจของคุณ.


ปรับปรุงล่าสุด:

นี่เป็นข้อบกพร่องและGoogleจะแก้ไขในการอัปเดตครั้งต่อไป

เราได้รอปัญหานี้เพื่อพิจารณาในรุ่นต่อ ๆ ไป ขอขอบคุณที่สละเวลาเพื่อปรับปรุง Android ให้ดีขึ้น


คำตอบนี้กลายเป็นการรวมกลุ่มของแนวคิดและได้รับการแก้ไขเพื่อรวมข้อมูลจากการสนทนาในความคิดเห็น

androidmarketAPI จะเป็นที่กำหนดเองAPIที่เขียนโดยนักพัฒนา ไม่สามารถใช้ได้กับสาธารณะ

เพื่อตอบข้อกังวลของคุณในความคิดเห็น นักพัฒนาจะใช้ apis ปัจจุบันที่มีอยู่ผ่าน Android Developer และ Google เพื่อสร้างโครงการที่จัดการสิ่งเหล่านี้ทั้งหมด

สำหรับการเข้าถึงFull Account Accessฉันไม่แน่ใจว่านักพัฒนาเหล่านี้ประสบความสำเร็จได้อย่างไร

ผมอยากแนะนำให้ใช้AccountManagerซึ่งเป็นส่วนหนึ่งของ android.accounts, มีการเข้าถึงสิทธิและวิธีการgetUserData ผู้จัดการบัญชีสามารถเข้าถึงรหัสผ่านและสามารถสร้างและลบบัญชีได้ สิ่งนี้อาจใช้กับผู้ให้บริการเนื้อหา

ดูUdinic SyncAdapter รับรองความถูกต้อง

ในการตอบกลับความคิดเห็นของคุณ:

บล็อกนี้จะช่วยคุณในการเริ่มต้น เขียนของคุณ Authenticator


แอพเหล่านี้ทำงานอย่างไรฉันไม่สามารถบอกคุณได้ นอกจากนี้ยังอาจมีการนำไปใช้งานที่แตกต่างกัน (เว้นแต่จะเป็นการทำงานร่วมกันเบื้องหลังพวกเขาจะแตกต่างออกไปอย่างแน่นอน)

หนึ่งเดา ประการแรกใช้GoogleSignInAccountกับ com.google.android.gms.auth.api.signin

มีคำจำกัดความสำหรับขอบเขตเพื่อกำหนดขอบเขตของการอนุญาตที่แอปได้รับ

การใช้ requestScopes ()ไฟล์

โปรไฟล์สตริงสุดท้ายแบบคงที่สาธารณะ

... / ช่วยให้เว็บแอปของคุณเข้าถึงการติดตั้งแอป Android แบบ over-the-air

สำหรับตัวอย่างเช่น :

GoogleSignInOptions gso =
        new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestEmail().
            .requestScopes(new Scope("https://www.googleapis.com/auth/contacts.readonly"))
            .build();

หากการเข้าถึงแบบเต็มสามารถรับรายชื่อแอปทั้งหมดที่เจ้าของบัญชีใช้งานได้และเปรียบเทียบกับสิ่งที่อยู่ในอุปกรณ์

ตัวจัดการแพ็คเกจจะดึงรายการแอพทั้งหมดที่ติดตั้งบนอุปกรณ์ในปัจจุบัน
PackageInfoให้รายละเอียดเกี่ยวกับแอพ
INSTALL_REASON_USER จะกรองแอปที่ผู้ใช้ติดตั้งอยู่ออกไป

คุณอาจต้องการที่จะดูที่com.google.firebase.appindexingและเข้าสู่ระบบกระทำของผู้ใช้ สามารถติดตามการกระทำที่แตกต่างกันได้

ประวัติความเป็นมาของบัญชีผู้ใช้จะพบได้ที่https://myactivity.google.com/myactivity

ลิงค์ที่เป็นประโยชน์เป็นOAuth 2.0 สนามเด็กเล่น


github repo node-google-play ที่ใช้โหนดนี้เป็นปัจจุบันและจะเรียก Google Play APIs เช่นเดียวกับที่เก็บถาวรที่ใช้เป็น api "ไม่เป็นทางการ" คือandroid-market-apiเพื่อค้นหาตำแหน่งทางการตลาด


แอป 1

แอปอ้างว่าจะใช้สิทธิ์ต่อไปนี้:

เวอร์ชัน 2.1.8 สามารถเข้าถึง: การซื้อในแอป
$

อื่น ๆ

  • รับข้อมูลจากอินเทอร์เน็ต
  • ดูการเชื่อมต่อเครือข่าย
  • การเข้าถึงเครือข่ายเต็มรูปแบบ
  • ใช้บัญชีบนอุปกรณ์
  • ป้องกันไม่ให้อุปกรณ์นอนหลับ
  • อ่านการกำหนดค่าบริการของ Google

ที่น่าสังเกตคือแอปไม่ได้ตั้งค่าการอนุญาตใด ๆ เมื่อมีพื้นฐานติดตั้ง ฉันไม่สามารถใช้คุณสมบัติใด ๆ ได้เนื่องจากฉันไม่มีแอปแบบชำระเงิน ดังนั้นสำหรับการค้นหาครั้งแรก - ไม่จำเป็นต้องมีสิทธิ์ใด ๆ ซึ่งจะบ่งชี้ว่าแอปไม่สามารถเข้าถึงบัญชีของฉันได้

ฉันตรวจสอบสิทธิ์ - ไม่มีการตั้งค่าใด ๆ ดังนั้นสิ่งเดียวที่ต้องมีคือยอมรับป๊อปอัปดังที่ปรากฏในคำถามของคุณ


แอป 2

แอปอื่น ๆ ที่คุณอ้างถึงซึ่งทำในลักษณะเดียวกันคือข้อมูลที่เข้าถึงได้โดยตรงมากกว่า

แอปที่ต้องชำระเงินของฉัน

ประกาศความปลอดภัย / ความเป็นส่วนตัว
ครั้งแรกที่คุณเรียกใช้แอพนี้แอพนี้จะขออนุญาตบัญชี Google ของคุณ นี่เป็นวิธีเดียวที่จะเข้าถึงข้อมูลที่จำเป็น ไม่มีการจัดเก็บข้อมูลส่วนบุคคลไม่มีการแบ่งปันข้อมูลเกี่ยวกับแอปของคุณกับผู้พัฒนาแอปนี้หรือแบ่งปันกับบุคคลที่สาม ทุกอย่างจะถูกเก็บไว้ในโทรศัพท์ของคุณเท่านั้น


ฉันได้ลงรายละเอียดเกี่ยวกับแอปเหล่านี้ในบล็อกโพสต์ซึ่งมีไว้สำหรับโครงการหลักของมหาวิทยาลัย (ไม่มีผลประโยชน์ทางการเงิน) ฉันมีแนวโน้มที่จะคิดว่านี่เป็นการใช้ประโยชน์จาก API และไม่ใช่สถานะตามการออกแบบโดย Google เนื่องจากไม่มีการเรียก API เพื่อดึงข้อมูลการซื้อแอปนอกเหนือจากแอปของผู้พัฒนาเอง ฉันตั้งสมมติฐานว่าเป็นการใช้ประโยชน์จาก Zero day ซึ่งในกรณีนี้ไม่มีวิธีที่ถูกต้องในการเข้าถึงข้อมูลนี้


10

ในกรณีของหนึ่งในแอปพลิเคชันเหล่านี้ (แอปที่ต้องชำระเงินของฉัน) หลังจากตรวจสอบปริมาณการใช้งานเครือข่ายจะเห็นได้ชัดว่ามันใช้หน้าบัญชีของร้านค้าเพื่อดึงรายการแอปพลิเคชันที่ต้องชำระเงิน ตอนนี้กลไกที่ใช้เป็นกลไกเดียวกับที่ Google Chrome ในปัจจุบันและ Pokemon GO ควรจะใช้ในช่วงเวลาหนึ่ง

โดยสรุปขั้นตอนในการดำเนินการมีดังต่อไปนี้:

  1. เข้าสู่ระบบ : สิ่งที่โปรแกรมดังกล่าวทำในขั้นตอนแรกคือการเข้าสู่ระบบผู้ใช้และเข้าถึงโทเค็นการเข้าถึงของผู้ใช้ ในการทำเช่นนั้นจะใช้android.accounts.AccountManager.getAuthToken()วิธีการ (ดูเพิ่มเติม: AccountManager ) อย่างไรก็ตามสำหรับขอบเขตโทเค็นoauth2:https://www.google.com/accounts/OAuthLoginมีการร้องขอ อาจเป็นเรื่องสำคัญที่ต้องทราบว่าตามเอกสาร OAth2จาก Google ขอบเขตนี้ไม่ถูกต้อง อย่างไรก็ตามดูเหมือนว่าเป็นขอบเขตที่ถูกต้องสำหรับ Google OAuth v1

  2. การแปลงโทเค็นการเข้าถึงที่เรียกใหม่เป็นไฟล์ ubertoken : ตอนนี้สิ่งที่ubertokenควรทำจริงไม่เป็นที่รู้จักและไม่มีเอกสารอย่างเป็นทางการเกี่ยวกับเรื่องนี้ อย่างไรก็ตามเบราว์เซอร์ Chrome ใช้เพื่อเข้าสู่ระบบผู้ใช้ ซึ่งทำได้โดยการขอhttps://accounts.google.com/OAuthLogin?source=ChromiumBrowser&issueuberauth=1เพจ

  3. การแปลงubertokenเป็นเซสชันเว็บไซต์ : ในภายหลังเมื่อใช้ที่สร้างขึ้นใหม่ubertokenสามารถรับเซสชันเว็บไซต์โดยใช้https://accounts.google.com/MergeSessionปลายทาง API หลังจากขั้นตอนนี้แอปพลิเคชันจะสามารถโหลดหน้าส่วนตัวทั้งหมดที่คุณสามารถเปิดได้โดยใช้เบราว์เซอร์ของคุณขณะเข้าสู่ระบบ ยกเว้นหน้าพิเศษบางหน้ารวมถึงการตั้งค่าการชำระเงิน

  4. การเรียกรายการแอปพลิเคชันที่ต้องชำระเงิน: การ ขอและแยกวิเคราะห์ไฟล์https://play.google.com/store/accountหน้า

ต่อไปนี้คือปริมาณการใช้งานของแอปพลิเคชันที่จับโดย ' Packet Capture ' :

การจราจรที่ถูกจับ

ดังที่เห็นได้ชัดเจนในภาพผลลัพธ์สุดท้ายก็เหมือนกับสิ่งที่ฉันได้รับเมื่อฉันเปิดหน้าบัญชีร้านค้าบนพีซีของฉันด้วย Chrome Desktop ตามปกติ: แหล่งที่มาของมุมมอง Chrome

หมายเหตุด้านข้าง :

ดูเหมือนว่าจุดสิ้นสุดเหล่านี้จะไม่ได้รับการจัดทำเป็นเอกสารเนื่องจากส่วนใหญ่ใช้โดยโปรแกรมของ Google เองและควรได้รับการพิจารณาภายใน ดังนั้นฉันขอแนะนำอย่างยิ่งว่าอย่าใช้ในโปรแกรมหรือโค้ดใด ๆ ที่คุณคาดว่าจะรันเป็นเวลานานหรือในสภาพแวดล้อมการใช้งานจริง นอกจากนี้ยังมีข่าวร้ายสำหรับคุณด้วยเช่นกันดูเหมือนว่าหน้าบัญชีของ Google Play จะแสดงรายการเฉพาะแอปพลิเคชันที่ต้องซื้อหรือแอปฟรีพิเศษ (โดยเฉพาะแอป OEM) ฉันจะพยายามหาเวลาและเจาะลึกลงไปในแอปพลิเคชันอื่น ๆ

บทความที่น่าสนใจ :

โทเค็นโปเกมอน

ใช้ประโยชน์จากโทเค็น OAuth2 ของ Google Chrome


1
คุณช่วยแสดงตัวอย่างฉบับเต็มเพื่อดูวิธีการทำงานและตอบคำถามที่ฉันถามได้ไหม อย่างที่เขียนไปว่าอยากได้ข้อมูลต่างๆเกี่ยวกับแต่ละแอพไม่ว่าจะเป็นราคาเมื่อซื้อ ฯลฯ ... เป็นไปได้ไหมที่จะได้รับรายชื่อแอพฟรี
นักพัฒนา Android

3

หากคุณมีการเข้าถึงรูทคุณสามารถเข้าถึงได้ /data/data/com.android.vending/databases/library.db

OnePlus3T:/data/data/com.android.vending/databases
-rw-rw---- 1 u0_a2 u0_a2 229376 2018-12-26 18:01 library.db

IAPฐานข้อมูลนี้มีข้อมูลทั้งหมดที่แอปที่คุณได้ดาวน์โหลดซึ่งปพลิเคชันที่คุณได้ซื้อและแม้แต่ในแอปที่คุณได้กระทำ

ตรวจสอบตารางความเป็นเจ้าของมีข้อมูลทั้งหมด

ownership (account STRING, library_id STRING, backend INTEGER, doc_id STRING, doc_type INTEGER, offer_type INTEGER, document_hash INTEGER, subs_valid_until_time INTEGER, app_certificate_hash STRING, app_refund_pre_delivery_endtime_ms INTEGER, app_refund_post_delivery_window_ms INTEGER, subs_auto_renewing INTEGER, subs_initiation_time INTEGER, subs_trial_until_time INTEGER, inapp_purchase_data STRING, inapp_signature STRING, preordered INTEGER, owned_via_license INTEGER, shared_by_me INTEGER, sharer_gaia_id TEXT, shareability INTEGER, purchase_time INTEGER, PRIMARY KEY (account, library_id, backend, doc_id, doc_type, offer_type))

1

การจัดการกับ Google API ที่ไม่เป็นทางการเป็นพื้นที่ที่ซับซ้อนอย่างไม่น่าเชื่อ มันจะเป็นไปได้ที่จะทำให้มันใช้งานได้ แต่นั่นคือทั้งหมดที่ฉันจะพูด ดำเนินการด้วยความเสี่ยงของคุณเอง

สิ่งแรกที่คุณจะต้องทำคือการได้รับการรับรองความถูกต้องของ Google Play โทเค็น สามารถทำได้หลายวิธี แต่นี่คือวิธีการดำเนินการในแอปที่ซื้อ:

public static String getAuthToken(Activity activity, String userEmail) {

    AccountManager accountManager = AccountManager.get(activity);
    Account userAccount = new Account(userEmail, "com.google");

    Bundle options = new Bundle();
    options.putBoolean("suppressProgressScreen", true);

    String token;

    try {
      Bundle result = accountManager
        .getAuthToken(userAccount, "androidmarket", options, activity, null, null)
        .getResult();
      token = result.getString("authtoken");
    } catch (OperationCanceledException e) {
      Log.d(TAG, "Login canceled by user");
      return null;
    } catch (IOException | AuthenticatorException e) {
      Log.e(TAG, "Login failed", e);
      return null;
    }

    return token;
}

บางสิ่งที่ควรทราบที่นี่:

  • รหัสข้างต้นจะต้องทำงานแบบไม่พร้อมกัน ฉันแนะนำ RxJava แต่ AsyncTask จะใช้งานได้
  • คุณต้องระบุอีเมลสำหรับบัญชีที่คุณต้องการใช้ ฉันจะปล่อยให้รายละเอียดขึ้นอยู่กับคุณ AccountManagerแต่นี่คือการใช้ค่อนข้างง่าย

หลังจากที่คุณมีโทเค็นรับรองความถูกต้องคุณสามารถเข้าถึงปลายทางของ Google Play Storeได้แล้ว https://android.clients.google.com/fdfe/purchaseHistoryหนึ่งหลักที่ใช้โดยซื้อเป็นปพลิเคชัน อีกอันที่คุณอาจสนใจคือhttps://android.clients.google.com/fdfe/details?doc=(package name)(จากAPKfetch code ) นี่คือหน้าที่มีการวิเคราะห์เพิ่มเติมและบางส่วน หากคุณส่งคำขอไปยัง API เหล่านี้คุณจะต้องระบุส่วนหัวหลายส่วน:

  • Authorization - "GoogleLogin auth=(your auth token)"
  • User-Agent - "Android-Finsky/6.4.12.C-all%20%5B0%5D%202744941 (api=3,versionCode=80641200,sdk=" + VERSION.SDK_INT + ",isWideScreen=0)";
  • X-DFE-Device-Id- โครงสร้างบริการของ Google ID ของอุปกรณ์ที่ได้รับจากAdvertisingIdClient
  • X-DFE-Client-Id - "am-android-google"
  • Accept-Language- "en"รหัสภาษาของอุปกรณ์เช่น

ตอนนี้คุณจะต้องแยกการตอบสนอง นี่คือสิ่งที่ยุ่งยาก API เหล่านี้ส่งคืนข้อความที่เข้ารหัสเป็นProtobufดังนั้นจึงเป็นเพียงข้อมูลไบนารีเว้นแต่คุณจะมีสคีมา (ซึ่งแน่นอนมีเพียง Google เท่านั้นที่มี) วิธีหนึ่งในการดำเนินการตามทฤษฎีนี้คือการแยกคอมไพล์แอป Google Play Store และนำโมเดล protobuf ที่สร้างขึ้นมาใช้ใหม่ด้วยเครื่องมือเช่นJADX JADX

น่าเสียดายที่ฉันได้ลองใช้แล้วและไม่ได้ผลจริงๆ คลาสโมเดล Protobuf นั้นซับซ้อนเกินไปสำหรับตัวถอดรหัสมาตรฐาน สิ่งที่คุณสามารถใช้เป็นเครื่องมือที่เรียกว่าPBTK คุณควรใช้สิ่งนี้บน Google Play Store 6.1.12 APK เนื่องจากเป็นเวอร์ชันสุดท้ายก่อนที่จะเริ่มใช้ ProGuard ทำทราบว่าโปรแกรมนี้มีสองข้อผิดพลาดในสคริปต์ที่จำเป็นต้องได้รับการแก้ไขก่อนที่จะใช้มันได้เปลี่ยน'extracto'ไป'extractor'ในgui.pyและลบคำสั่งยืนยันในบรรทัด 500 jar_extract.py

ตอนนี้ควรส่งออกคลาสการตอบกลับทั้งหมดเป็นไฟล์. proto สร้างโฟลเดอร์ภายใต้ src / main ที่เรียกprotoและลากไดเร็กทอรี 'com' ที่สร้างขึ้นทั้งหมดไปที่โฟลเดอร์นั้น com/google/android/finsky/protosคุณสามารถลบทุกอย่างที่ไม่อยู่ภายใต้ ทำตามคำแนะนำออนไลน์เพื่อตั้งค่า Gradle ด้วยปลั๊กอิน Protobuf Lite

เมื่อคุณต้องการแยกวิเคราะห์การตอบกลับคุณสามารถใช้คลาส ResponseWrapper ได้เนื่องจากทั้งหมดดูเหมือนจะอยู่ภายใต้นั้น

เท่าที่ฉันจะพาคุณไปได้ มีโอกาสดีที่ฉันจะเข้าใจผิด JADX เป็นเพื่อนที่ดีที่สุดของคุณที่นี่เพราะวิธีที่ดีที่สุดในการพิจารณาว่าแอปกำลังทำอะไรอยู่โดยดูที่รหัส หวังว่านี่จะช่วยและมีความสุขในการพัฒนา!


เกี่ยวกับAccountManagerคุณแน่ใจหรือไม่ว่ายังมีอยู่ ฉันคิดว่าปัจจุบัน Google ให้ตัวเลือกในการใช้งานเท่านั้นAccountPicker(เช่นที่นี่: stackoverflow.com/a/26888259/878126 ) แต่ฉันจะดำเนินการที่เหลือได้อย่างไร? คุณได้ทดสอบหรือไม่? มันได้ผลสำหรับคุณหรือไม่? กรุณาแบ่งปันรหัสสำหรับมัน นั่นเป็นเหตุผลที่ฉันตั้งค่าหัวเพื่อดูว่ามันทำงานได้จริง ...
นักพัฒนา Android

ใช่ AccountPicker เป็นความคิดที่ดีกว่าจริงๆ และใช่ฉันลองใช้รหัสเพื่อรับโทเค็นและใช้งานได้ดี ฉันยังไม่ได้ลองที่เหลือเพราะมันเหมือนกับการทำงานอย่างน้อย 5 ชั่วโมงถ้าทุกอย่างราบรื่น แม้แต่ค่าหัว 500 ก็ไม่คุ้มค่า
รอบคัดเลือก

1
นี่คือรหัสเต็มสำหรับการรับโทเค็นการตรวจสอบความถูกต้อง (ใช้งานได้เหมือนกับแอปที่ซื้อมาในภาพหน้าจอของคุณ): github.com/ethanblake4/PlayStoreDemo
รอบคัดเลือก

การรับโทเค็นการตรวจสอบสิทธิ์ดูเหมือนจะทำงานได้ดี แต่ส่วนที่ยากที่ฉันคิดคือการดึงแอปออกมาเอง :(
นักพัฒนา Android

ใช่นั่นเป็นส่วนที่ต้องใช้เวลามากในการทำงานอย่างน่าเสียดาย อย่างไรก็ตามฉันถอดรหัสรหัสสำหรับแอปที่ซื้อแล้วและนั่นคือวิธีการทำที่นั่น อย่าลังเลที่จะแจ้งให้เราทราบหากคุณต้องการความช่วยเหลือเกี่ยวกับขั้นตอนข้างต้น
รอบคัดเลือก

-2

คุณสามารถรับชื่อแพ็คเกจของแอพที่ติดตั้งทั้งหมดบนอุปกรณ์จากนั้นรับข้อมูลของแพ็คเกจที่ติดตั้งทั้งหมดที่คุณพบในอุปกรณ์จาก Google Play โดยไม่จำเป็นต้องเข้าถึงบัญชีผู้ใช้ มีบุคคลที่สามหรือ apis ที่ไม่เป็นทางการบางรายที่จะรับรายละเอียดแอป Google Play เป็น json โดยรับชื่อแพ็คเกจแอป ตัวอย่างเช่นhttps://42matters.com/ จากนั้นใช้ข้อมูลที่ได้รับสำหรับทุกแพ็คเกจเพื่อค้นหาแพ็กเกจฟรี


ไม่คำถามที่ฉันให้ความสำคัญเป็นของแอปที่ผู้ใช้เคยติดตั้งไม่ใช่เฉพาะแอปที่ติดตั้งในขณะนี้ นอกจากนี้ทำไมต้องใช้อย่างไม่เป็นทางการหากมีวิธีอย่างเป็นทางการ ...
นักพัฒนา Android

@androiddeveloper ฉันเดาว่าไม่มี api อย่างเป็นทางการในการรับรายละเอียดแอปโดยรับชื่อแพ็คเกจใน Google Play มี API อย่างเป็นทางการหรือไม่
Bahman

@androiddeveloper Google เก็บชื่อแอปฟรีที่ถอนการติดตั้งไว้สำหรับผู้ใช้ทุกคนหรือไม่
Bahman

ใช่. หากคุณเปิดแอป Play Store ให้ไปที่ลิ้นชักการนำทางจากนั้นไปที่ "แอปและเกมของฉัน" คุณจะเห็นแอปทั้งหมดที่คุณเคยติดตั้งจากที่นั่นไม่ใช่เฉพาะแอปที่ติดตั้งในปัจจุบัน และเป็นไปตามของ Google จะได้รับอนุญาต (หรืออย่างน้อยก็ดูเหมือนว่าพวกเขาบอกว่ามัน) เพื่อใช้ API นี้: issuetracker.google.com/issues/79195087 หรือใครก็ตามที่พูดคุยกับฉันไม่คุ้นเคยกับสิ่งที่เกิดขึ้นที่นั่น ...
นักพัฒนา Android

-2

ฉันมีแหล่งข้อมูลสองอย่างให้คุณพิจารณา แต่ก่อนอื่นพูดไม่ได้ ไม่มี api จาก GOOGLE ที่จะให้คุณทำในสิ่งที่คุณต้องการเนื่องจากเมตริกเหล่านี้ไม่ได้เก็บไว้ในโทรศัพท์ แต่จะอยู่ในบริการของ Google Play Store และ Google ไม่มี API อย่างเป็นทางการสำหรับ play store อย่างไรก็ตามคุณสามารถรวบรวมข้อมูลบางส่วนจากสองไซต์นี้:

https://www.quora.com/Is-there-an-API-for-the-Google-Play-Store ป้อนคำอธิบายลิงก์ที่นี่

/android/162146/how-to-see-all-the-apps-i-have-downloaded-from-google-play-store

และนี่ก็เพียงพอแล้วที่จะดูว่าจะทำอย่างไรให้สำเร็จ

อันดับแรกรายการแอปที่ดาวน์โหลดโดยบัญชีจะอ้างอิงได้จากบัญชีเท่านั้น และสามารถทำได้ผ่าน play store เนื่องจากแอปของคุณจะถูกติดตั้งบนโทรศัพท์ของผู้ใช้นั้นสิ่งนี้ไม่สำคัญ ... คุณอยู่ใน

ประการที่สองคุณจะต้องมี API ของบุคคลที่สามที่สร้างขึ้นสำหรับ GOOGLE PLAY STORE มีอยู่บ้างโปรดตรวจสอบลิงก์แรก

โดยใช้ api ที่คุณเลือกคุณจะส่งคำขอรับไปยัง play store และในทางกลับกันคุณควรได้รับวัตถุ json ที่จะ deserialize เป็นส่วนใหญ่

deserialize วัตถุและคุณจะมีรายการของคุณ รายการใดที่คุณได้รับจะขึ้นอยู่กับจุดสิ้นสุดที่คุณใช้ แต่ควรอธิบายโดย / ใน API เอง

โชคดี!


ในลิงก์ทั้งหมดฉันไม่เห็นรายการแอปที่ติดตั้งโดยผู้ใช้ปัจจุบัน พวกเขาไม่มีเฟสล็อกอินด้วยซ้ำ ทั้งหมดนี้รวบรวมข้อมูลทั่วไปเกี่ยวกับแอปไม่ว่าผู้ใช้จะติดตั้งหรือไม่ก็ตาม
นักพัฒนา Android
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.