New version interface migration guide
Why we need to migrate to the new version of the interface
- The brand new version (V2) interface has richer functions, more efficiency, more standardization, and more flexibility than the old version (V1) interface. Advantages such as controllability can well meet the needs of developers.
- The OAuth1.0 authorization method used by the V1 interface cannot adapt to further openness and has been abandoned by major open platforms. It is replaced by the new OAuth2. 0 authorization method replaced.
Advantages of the new interface over the old interface
- 1. More functions
- a) V2 has a large number of new interfaces compared to V1, including enhanced relationship interface, search topic interface, short link interface, popular Weibo interface, location service interface, notification interface, general
- service interface, and social TV interface ;
- b) In addition, the SCOPE authorization function, friend grouping interface, invitation interface, socialization interface, and statement interface will also be opened soon.
- a) V2 has a large number of new interfaces compared to V1, including enhanced relationship interface, search topic interface, short link interface, popular Weibo interface, location service interface, notification interface, general
- 2. More efficient
- a) Add trim to the return values of Weibo, comments, users, etc. Switch, return data on demand, reduce redundant data occupying bandwidth, and adapt to the characteristics of mobile applications;
- b) Weibo comments and forwarding numbers can be returned directly with the Weibo return value, without the need to call additional interfaces, reducing program burden ;
- c) User return value increases the number of mutual fans and friends, whether to follow me, whether to be followed by me and other information, intuitively reflecting the user relationship;
- d) Timeline class interfaces will all be added in the future Filtering function (feature) and application isolation function (base_app) can filter and isolate the message flow according to application needs.
- 3. More standardized
- a) Unify parameters and return value fields, all lowercase letters, Use "_" to link between words;
- b) Interface URI, all using: domain version number resource class interface name return value format parameter;
- c) core field: Weibo , comments, users, and relationships are all standardized to avoid core fields returning different values in different interfaces, thereby reducing development costs;
- d) Unified new error return value format and error code, V2 error code address: http ://open.weibo.com/wiki/Error_code.
- 4. More controllable
- a) Divide the interface into two levels of permissions: normal, Advanced, making the permission control of advanced functional interfaces clearer and more transparent;
- b) Added interface authorization management console: interfaces can be grouped and packaged, and application for authorization and interface level is open to applications, reducing the application process.
V1 Prohibited Call Time
- 1. On July 24, 2012, all "unapproved applications" are prohibited from calling the V1 interface;
- 2. On August 27, 2012, all "audited applications" with less than 1,000 users were prohibited from calling the V1 interface (audited Xweibo applications are temporarily unaffected);
- 3. Around the beginning of October 2012, all The application calls the V1 interface. Please follow @微博Open Platform for the specific time.
- 4. On December 20, 2012, applications with "a cumulative number of users less than 500,000" are prohibited from using the V1 interface.
- Applications that are prohibited from calling the V1 interface will return: "40109 Oauth Error: consumer_key_refused!" error message when calling the V1 interface.
- The V1 interface will be completely offline in the near future. This article provides migration guidance for all audited applications that still use the V1 interface to help you move faster Complete the migration.
Frequently Asked Questions During Migration
- 1. How to transition Xweibo components and applications to the V2 version?
- Xweibo’s approved online applications will not be affected for the time being around October. You need to actively cooperate with Xweibo’s official prompts to upgrade accordingly. Please follow Xweibo official website: http://x.weibo.com.
- 2. Why are the private messages and user information acquisition interfaces in V1 not open?
- Private messages and privacy-related user information interfaces have been abused by a large number of applications, resulting in a large number of user complaints, which has had a very negative impact on the openness of the platform. In order to protect user privacy, the platform has decided not to open such cases anymore. Interface for user information leakage.
- 3. Do I need to apply for OAuth2.0 authorization?
- OAuth2.0 authorization does not require application and can be used by any application.
- What you need to apply for additionally is the authorization validity period or client verification authorization. The authorization validity period can be applied online in the application console, under the authorization mechanism option under the interface management tab. For the client verification authorization application method, see the second question.
- 4. How to apply for client authentication authorization (Resource Owner Password Credentials)?
- Because the client authentication authorization of OAuth2.0 will obtain the user's clear text password, limited opening is implemented.
- Application conditions:
- a) The application category belongs to the desktop client , mobile client.
- b) The application itself has passed the open platform copywriting and square review, and has been displayed on the square for more than 15 days.
- c) The number of users of the application is more than 30,000.
- d) The function of the application itself is closely related to Weibo.
- After meeting the conditions, go to "Interface Management" in the application console -->" Apply in "Authorization Mechanism".
- 5. Do mobile client and PC client applications need to set a callback page?
- Required, clients that use the authentication and authorization (Authorization Code) method of web applications also need to set up an authorization callback page or bind a domain name. In the program, the authorization page is called in the form of webview to return the code. Specific implementation reference Corresponding client SDK: http://open.weibo.com/wiki/SDK.
- #6. How to check the validity period of the access_token of the application?
- a) Desktop client and mobile client applications, testing: 1 day, review: 7 days, review and display in the square: 90 days.
- b) Non-client applications, 1 day for testing, 7 days for normal, 15 days for intermediate, 30 days for advanced, and 90 days for cooperation.
- 7. How to apply for extending the validity period of the access_token of the application?
- a) Desktop client and mobile client applications, unapproved applications must be submitted to the application console 7 days after the application is approved. If it needs to be valid for 90 days, it must be applied after the approval is passed
- Square review.
- b) Non-client applications, unapproved applications will be at the normal level for 7 days after the application is approved in the application console. If you need to apply for a higher level, go to the "interface of the application console" Apply in "Management"-->"Call Frequency".
- a) Desktop client and mobile client applications, unapproved applications must be submitted to the application console 7 days after the application is approved. If it needs to be valid for 90 days, it must be applied after the approval is passed
- a) When the user authorizes the user, the expires_in (unit: seconds) value returned by the oauth2/access_token interface is the life cycle of the access_token.
- b) From the above corresponding table, find the authorization validity period corresponding to the application. Expiration time = user authorization time authorization validity period.
- The authorization validity period of the application can be viewed in the interface access permission description or in the application console.
- When the access_token expires and the interface is called, the platform will return an error with error code 21332. At this time, the user needs to be guided to re-authorize. It is recommended to save the expiration time each time a user is authorized and determine whether the user's access_token has expired before each call to the interface.
- When guiding an authorized user to authorize again, if the user is logged in to Weibo , then the authorization page "flashes by" without the user clicking the "Authorize" button again. If you want the user to log in again for authorization, pass in the parameter when calling the authorize interface: forcelogin=true, which is not filled in by default (the authorization page flashes However) this parameter is equivalent to forcelogin=false.
- 10. How to conduct local testing of online applications?
- a) The application does not contain advanced permissions or advanced interfaces. It is recommended to apply for a common Appkey for local testing;
- b) The application contains advanced interfaces or advanced permissions. You may consider binding hosts to point locally. Test code for testing.
- For example: the application redirect_uri is: http://aa.abc.com/index.php, and the corresponding local address is http://127.0.0.1/index.php, then you can
- To bind the test machine hosts to: 127.0.0.1 aa.abc.com.
- For example: the application redirect_uri is: http://aa.abc.com/index.php, and the corresponding local address is http://127.0.0.1/index.php, then you can
- 11. How to remove authorized users from OAuth1.0 Transitioning to OAuth2.0 authorization?
- When the application authorization method is migrated from OAuth1.0 to OAuth2.0, the total number of authorized users of the application remains unchanged. The following are two suggestions for user transition:
- a) Directly launch OAuth2. 0 authorization version, OAuth2.0 returns the user's uid when obtaining the access_token. Based on this uid, the user is judged to be an old user or a new user
- , and new or updated user access_token and other information in the database are added;
- b) Use the get_oauth2_token interface to exchange for the access_token of OAuth2.0. This method can save the user from authorizing OAuth2.0 for the first time and appropriately extend the time of passing
- OAuth2.0 To complete the implementation of a) (this method can be considered for long authorization validity period or client-type applications).
- Note: Be cautious when doing batch exchanges, the same OAuth1.0 The Access Token can only be exchanged once (multiple calls will return the same token), and the expiration time is calculated from the first exchange.
- Note: Be cautious when doing batch exchanges, the same OAuth1.0 The Access Token can only be exchanged once (multiple calls will return the same token), and the expiration time is calculated from the first exchange.
a) The test account only applies restrictions to unapproved applications. If your application has been approved in V1, there is no need to add test users.
- b) If you use an unaudited Appkey for testing, you need to add a test account in the application or website console "Application Information" or "Website Information" --> "Test Account"
- , for unaudited applications, only the application creator and test account can call the interface.
a) The interface return value may contain fields such as html. When returning in XML format, special processing of html is required, which directly affects the platform packaging return value and the developer's parsing return. Value efficiency;
- b) For languages such as JS, it is more difficult to parse complex XML and the efficiency is lower;
- c) The XML format uses Key- The form of Value is very redundant and does not meet the needs of applications with high performance requirements such as mobile clients.
The icon indicates that this interface is an advanced interface. Advanced interface application requires that the application must pass copywriting review and no malicious behavior has occurred. For other requirements and application procedures, see: Advanced Interface Application Guide.
- 15. What should I do if I still have questions after reading the migration guide?
- a) Get help quickly through the open platform Q&A system;
- b) Send your questions via comments to @微博API and the Weibo related to migration, we will answer them one by one .
- For other questions, please see: Interface FAQ.
How to migrate from V1 to V2
Brief description
- The migration from V1 to V2 mainly requires completing the transition from OAuth1.0 to OAuth2.0 and completing the corresponding replacement of the original interface of V1 with the new interface in V2.
Work that needs to be completed during migration
- 1. Migration of authorization methods, OAuth1.0 upgrade to OAuth2.0;
- 2. Read migration notes and common problem solving suggestions;
- 3. Migration of old and new interfaces, interface calling addresses, calling methods, parameters, return values, and error messages Handled code transformation.
Upgrade from OAuth1.0 to OAuth2.0
- 1. Brief introduction to OAuth2.0
- OAuth2.0 is a simpler and more secure authorization method than OAuth1.0, and supports web, desktop and mobile applications. It is the most important user authentication and authorization method for the Weibo open platform in the future.
- 2. Preparation before migration
- Please read the OAuth2.0 Development Guide first.
- Compared with OAuth1.0, the OAuth2.0 authorization method introduces the authorization callback page and bound domain name, which simplifies the authorization process and also improves the security of authorization.
- Before implementing the OAuth2.0 authorization method, we need to set up the application's authorization callback page or bind the domain name for different applications. Defined, used to obtain the code returned after successful authorization, and then obtain the access_token through the code.
- Use a developer account to log in to http://open.weibo.com and enter the "My Applications" console that needs to be migrated Apply settings:
- a) Website access category
- Click "Website Information" in the console navigation and view the website domain name in the basic website information. If your website application has not yet verified ownership, you will be prompted to verify ownership. Click to enter the verification page to complete ownership verification. For web applications, please refer to: Web Application Migration Guide.
- Note: The website domain name filled in during verification is your application’s Bind domain name.
- #b)In-site application
- In-site application The application already uses the OAuth2.0 authorization method and does not need to be modified.
- c) Client Application & Other Applications
- Click the console navigation "Application Information" -> "Advanced Information" to bind the authorization callback page or domain name Certainly. Setting up the callback page does not require a second review, which is convenient for you to conduct testing and development. Binding a domain name requires a second review. During the second review, online applications will not be affected. Binding a domain name increases the security of the application. At the same time, all pages under the domain name can be used as authorization callback pages.
- c) Client Application & Other Applications
- Note: The client also needs to set up an authorization callback page or bind a domain name , use the webview method in the program to call the authorization page and return the code. For specific implementation, please refer to: Mobile Application Migration Guide. Other clients can refer to the corresponding SDK: http://open.weibo.com/wiki/SDK.
- Note: The client also needs to set up an authorization callback page or bind a domain name , use the webview method in the program to call the authorization page and return the code. For specific implementation, please refer to: Mobile Application Migration Guide. Other clients can refer to the corresponding SDK: http://open.weibo.com/wiki/SDK.
Main process (please read the OAuth2.0 Development Guide first):##a) Guide users who need authorization to access the following address
- Note: The code value returned each time is different and Invalid after exchange for access_token.
- ##https://api.weibo.com/oauth2/access_token?client_id=YOUR_APP_KEY&client_secret=YOUR_APP_SECRET&grant_type=authorization_code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&code=CODE ;
- ##Note: Must be submitted using POST, where client_id=YOUR_APP_KEY&client_secret= YOUR_APP_SECRET can be added to the header using
basic method.
can be viewed in the interface access permission description or in the application console.
- ##
- Writing interface must be submitted using POST method, such as:
- Interface: statuses/upload
- Call: https: //upload.api.weibo.com/2/statuses/upload.json
- ##Note: Parameter information is placed in the header and body. Except for access_token, other parameters must be placed in the body for requests. Upload request message body example:
- ##=> Send header, 301 bytes (0x12d)
- POST /2/statuses/upload.json HTTP/1.1
- User-Agent: curl/7.19.4 (i586 -pc-mingw32msvc) libcurl/7.19.4 Ope
- nSSL/0.9.8g zlib/1.2.3
- Host: upload.api.weibo.com
- Accept: */*
- Content-Length: 38694
- Expect: 100-continue
- Content-Type: multipart/form-data; boundary=------ -------------
- --------8933e7b00565
- ##=> Send header, 301 bytes (0x12d)
- #<= Recv header, 23 bytes (0x17)
- HTTP/1.1 100 Continue=> Send data, 370 bytes (0x172)-------------------------- ----------8933e7b00565Content-Disposition: form-data; name="access_token"
- ##2.00RQs9XCmlEQDD4fb4b0bfe3Be7ZQE
- ----- ------------------------8933e7b00565
- Content-Disposition: form-data; name="status"
- ----- ------------------------8933e7b00565
- ##2.00RQs9XCmlEQDD4fb4b0bfe3Be7ZQE
- #Test02
- ----------------------------------8933e7b00565
- Content-Disposition: form-data; name="pic" ; filename="psu.jpg"Content-Type: image/jpeg
##Migrate the V1 interface to the V2 interface
After implementing OAuth2.0 authorization, you need to migrate the V1 version interface used by the application to V2 accordingly version interface. At this time, the code needs to be modified according to the calling address, calling method, parameters, return value, and error information processing of the new interface.- The following is the corresponding list of V2 version interfaces and V1 version interfaces. Some old version interfaces are no longer provided due to user complaints or performance reasons. At the same time The new version of the interface provides a wealth of advanced interfaces to open high-quality application applications. You can submit advanced interface applications directly in the application console.
- In addition, SCOPE authorization function, friend grouping interface, invitation interface, socialization and other interfaces are already in the platform opening plan, and we will ensure the functions , performance and stability, it will be opened in due course. For the detailed opening date, please pay attention to @微博API.
If the existing interface fails to meet your needs, please welcome @微博API to provide feedback. We will open it appropriately based on the intensity of developer needs and the interests of Weibo users.
##New and old interface correspondence table New version V2 interface ##statuses/public_timelineCorresponds to the old version V1 interface Interface name statuses/public_timeline Get the latest public Weibo ##statuses/friends_timeline statuses/friends_timeline Get the current login user and the users they follow Latest Weibo statuses/home_timeline ##Get the latest Weibo of the currently logged in user and the users he follows statuses/friends_timeline/ids statuses/user_timelineGet the latest Weibo IDs of the currently logged in user and the users he follows statuses/user_timeline Get the Weibo posted by the user statuses/user_timeline/ids statuses/repost_timelineGet the ID of the Weibo posted by the user statuses/repost_timeline Return to the latest forwarded Weibo of an original Weibo statuses/repost_timeline/ids Get an original Weibo Weibo’s latest repost ID ##statuses/repost_by_me statuses/repost_by_meReturns the latest repost by the user Weibo statuses/mentions statuses/mentions Get @current user’s latest Weibo statuses/mentions/ids ##Get @ the current user’s latest Weibo ID statuses/bilateral_timeline Get the latest Weibo of bilateral following users Get a single Weibo message based on IDstatuses/show statuses/show statuses/querymid Passed Get mid by id ##Get id by mid
statuses/queryid Return to the popular reposting list by daystatuses /hot/repost_daily Return to the popular forwarding list by weekstatuses/hot/repost_weekly Return to the current user by day Popular Weibo comments list of followersstatuses/hot/comments_daily ##statuses/hot/comments_weekly Return to the popular comment list by week statuses/count statuses/counts Get the number of retweets of the specified Weibo in batches Number of comments statuses/repost statuses/repost Repost a Weibo message statuses /destroy statuses/destroy Delete Weibo information statuses/update statuses/update Post a Weibo message statuses/upload statuses/upload Upload a picture and post a Weibo message statuses/upload_url_text Publish a Weibo and specify the uploaded image or image url emotions emotions Get official emoticons comments/show statuses/comments Get the list of comments on a Weibo post comments/by_me statuses/comments_by_me The list of comments I sent comments/to_me statuses/comments_to_me List of comments I received comments/timeline statuses/comments_timeline Get the list of comments sent and received by the user comments/mentions Get@ Go to my comments comments/show_batch ##Get comment content in batchescomments/create ##comments/destroystatuses/comment Comment on a Weibo comments/destroy_batchstatuses/comment_destroy/:id Delete a comment comments/replystatuses/comment/destroy_batch Delete comments in batches users/showstatuses/reply Reply to a comment users/domain_showusers/show Get user information ##Get users through personalized domain names Information users/counts Get the number of fans, followers, and Weibo posts of users in batches friendships/friends Get the user’s watchlist friendships/friends/in_common Get the list of common followers friendships/friends/bilateral Get bilateral Follow list friendships/friends/bilateral/ids Get bilateral follow UID list friends/ids friendships/show, friendships/existsGet the UID list of the objects the user follows ##friendships/followers followers/idsGet user fan list friendships/followers/ids Get User fan UID list friendships/followers/active ##Get the user’s high-quality fan list friendships/friends_chain/followers
Get the people who follow the specified user among my followers friendships/show friendships/exists Get two Details of the relationship between each user friendships/create friendships/create Follow a user friendships/destroy friendships/destroy Unfollow a user friendships/remark/update user/friends/ update_remark Update follower remarks account/get_privacy account/get_privacy Get privacy settings Information account/profile/school_list Get a list of all schools account /rate_limit_status account/rate_limit_status Get the current user API access frequency limit ##account/get_uid account/verify_credentials Get the user UID after OAuth authorization (the function is equivalent to account/verify_credentials of the old interface) account/end_session account/end_session Logout favorites favorites Get the current user’s favorite list favorites/ids Get the ID of the current user's favorites listfavorites/show Get a single collection informationfavorites/by_tags Get the current user under a certain tag Favorite listfavorites/tags Favorite tag list of the currently logged in userfavorites/by_tags/ids Get the ID of the favorite list under a certain tag of the current userfavorites/create favorites/create Add favorite favorites/destroy favorites/destroy Delete favorites favorites/destroy_batch favorites/destroy_batch Delete favorites in batches favorites /tags/update Update favorite tagsfavorites/tags/update_batch Update the specified tag under all collections of the current userfavorites/tags/destroy_batch Delete all collections of the current user The specified tag undertrends trends Get someone’s topic trends/is_follow Whether to follow a topic ##trends/hourly trends/hourly Return to the hot topics in the last hour trends/daily trends/daily Return to the hot topics of the last day trends/weekly ##trends/followtrends/weekly Return to the hot topics in the last week trends/destroytrends/follow Follow a topic tagstrends/destroy Unfollow a topic tags/tags_batchtags Return the tag list of the specified user tags/suggestions
Get user tags in batches tags/createtags/suggestions Return to the list of tags recommended by the system tags/destroytags/create Add user tag tags/destroy_batchtags/destroy Delete user tags register/verify_nicknametags/destroy_batch Delete user tags in batches search/suggestions/usersaccount/verify_credentials Verify whether the nickname is available search/suggestions/statuses
Search user search suggestions##Search Weibo search suggestions search/suggestions/schools search school search suggestions ##search/ suggestions/companies search company search suggestions search/suggestions/apps Search application search suggestions search/suggestions/at_users trends/statuses@Lenovo search search/topics Search Weibo under a certain topic ##suggestions /users/hot users/hotGet system recommended users suggestions/users/may_interested users/suggestions Get people the user may be interested in suggestions/users/by_status ##Recommend users based on Weibo content ##Get featured recommendations from Weibo
suggestions/statuses/hot Main Feed Weibo Sort by Interest Recommendation Main Feed Weibo Weibo ID sorted by interest recommendationsuggestions/statuses/ reorder/ids Popular Collectionsuggestions/favorites/hot
suggestions/users/not_interested People who are not interested remind/unread_count statuses/unread Get various unread messages of a user remind/set_count statuses/reset_count Reset the unread readings of a certain message for the currently logged in user ##short_url/shorten short_url/shorten Long chain to short chain short_url/expand short_url/expand Short link to long link short_url/clicks ##short_url/ referers Get the total number of clicks on the short link short_url/locations
Get the referer source and number of clicks on a short link
Get the region source and number of clicks on a short link##short_url/share/counts short_url/share/counts short_url/share/statusesGet the number of Weibo shares of a short link on Weibo ##short_url/share/statuses short_url/comment/countsGet the latest Weibo content containing a specified single short link short_url/comment/counts Get the number of Weibo comments of the short link on Weibo ##short_url/comment/comments short_url/comment/commentsGet the latest Weibo comments containing a specified single short link ##short_url/info Get rich content information of short links in batches notification/send Send a new status notification to one or more users common/code_to_location Get the address name through address encoding common/get_city Get city list common/get_province Get Province list Get country list ##common/get_country Get the time zone configuration table common/get_timezone Get public location updates place /public_timeline Get the location updates of the user’s friends place/friends_timelineplace/user_timeline Get the location updates of a certain user place/poi_timeline Get the location updates of a certain location place/nearby_timeline Get the dynamics around a certain location place /statuses/show Get dynamic details place/users/show Get user information in LBS location service place/users/checkins Get the user’s checked-in information Place list place/users/photos Get the user’s photo list place/users/tips Get a list of user reviews place/users/todos Get the user’s todo list place/pois/show Get place details place/pois/users ##Get the list of people who checked in at a certain placeplace/pois/tips Get a list of place reviewsplace/pois/photos Get a list of place photosplace/pois/search Query locations by province and cityplace/pois/category Get location classificationplace/nearby/pois place/nearby/users
##Get nearby places place/nearby/photos
Get nearby people who posted their location on Weibo place/nearby_users/list
Get nearby photos place/pois/create
Get nearby people##Add place ##place/pois/add_checkin Sign in place/pois/add_photo Add photo place/pois/add_tip Add review place/pois/add_todo Add todo ##place/nearby_users/create Users add their own location ##place/nearby_users/destroy User delete Your own location ##location/base/get_map_imagebase/get_map_image Generate a static map imagelocation/geo/ip_to_geo geocode/ip_to_geo Return geographic information coordinates based on IP address location /geo/address_to_geo geocode/address_to_geo Return geographic information coordinates based on the actual address ##location/geo/geo_to_address geocode /geo_to_address Return the actual address based on geographical information coordinates location/geo/gps_to_offset Based on GPS coordinates Get the offset coordinates location/geo/is_domestic Determine whether the geographical information coordinates are domestic coordinates location/pois/show_batch Get POI points in batches Information location/pois/search/by_location pois/round Get POI point information by address location based on keywords location/pois/search/by_geo pois/keyword Get POI point information by coordinate point range based on keywords location/pois/search/by_area pois/view Get POI point information by rectangular area based on keywords location/pois/add pois/add_poi, pois/get_poi Submit a new POI point information location/mobile/get_location loc/get_location Get the current location information based on mobile base station WIFI and other data location/line/drive_route navigation/route Query self-driving route information based on start and end point data location/line/bus_route bus/transfer Based on starting point Query bus route information with destination data location/line/bus_line bus/line Query bus route information based on keywords location/line/bus_station bus/station Query bus station information based on keywords location/ citycode City code correspondence table location/citycode_bus Bus city code table location/category ##Category code correspondence tablelocation/error2 Geolocation information interface error code and explanationV1 interface that is obsolete or not yet supported in V2 user/statuses/id ##account /update_privacyJump to a single Weibo page based on Weibo ID and user ID Set privacy information ##blocks/createAdd a user to the blacklist blocks/existsDetect whether a user is a blacklisted user List blacklist users (output user details) blocks/blocking /idsList paginated blacklist users (only output id) Change Avatar
##account/update_profile_image##account/update_profile Change profile#OAuth2 (Development Guide) oauth2/authorize ##oauth2/access_tokenRequest user authorization Token Get the authorized Access Token ##oauth2/get_oauth2_tokenChange the OAuth1.0 Access Token to OAuth2.0 Access Token
- 15. What should I do if I still have questions after reading the migration guide?